PAT考试C++总结(三)

1.C++也支持string类型的相加,但是下面的例子是错误的:

string a="hello"+"world";

因为C++默认将“hello”和“world”识别为char类型的数组而不是string类型

2.double类型的输入输出是%lf,float类型的是%f,因为储存方式不同,一个是8地址,一个是4地址,最好不要混用,不然可能会出错

3.十进制化n进制:反复除n取余数,除n的得数再取余数,直到得数为0,把余数按顺序从低位到高位写出即可,比如1234换八进制,第1次除8得154余2,154除8得19余2,19除8得2余3,2除8得0余2,所以最后得到2322

4.stringstream如果要多次进行类型转换,在每进行一次以后,需要用clear()方法清除对象数据,如下:

int a,b;
string c,d;
stringstream ss;
ss<<a;
ss>>c;
ss.clear();
ss<<b;
ss>>d;

5.reverse()方法:可以用来反转地址a到地址b之间的内容,使用时需要添加头文件algorithm

string a="ab";
reverse(a.begin(),a.end());//进行这一步操作后,a的值为ba

6.用scanf获取字符的时候如果有换行在输入里,需要在适当的位置使用getchar()获取换行,避免换行被当作字符获取

7.scanf获取string类型,需要先为string类型分配足够的空间,因为scanf是标准输入流,没有缓存区,需要预先分配空间,而cin是输入流,它使用了缓冲区。如果要使用scanf读入字符串,那就一定要事先为它申请足够的内存空间,例如:

string a;
a.resize(100);
scanf("%s",&a[0]);

8.指针对象指向某一处地址,如果你希望赋值以后初始的更改了指针对象的值也发生更改的话就用指针吧。对于指针的初始化下面说的这两种方式的结果是不同的,c=&a*c=a
,在没有指定指针c的地址前,是不可以使用后者改变指针对应的值的,前者是修改c指向的地址指向对象a,当a的值改变时,c也会更改。后者只是单纯更改指针c的值,指针c指向的地址不变

#include<iostream>
using namespace std;

int main(){
    int a=3;
    int b,*c;
    b=a;
    c=&a;
    cout<<b<<" "<<*c<<endl;;
    a=4;
    cout<<b<<" "<<*c<<" "<<c<<" "<<&a<<endl;
    *c=3;
    cout<<b<<" "<<*c<<" "<<c<<" "<<&a;
    return 0;
}

结果如下:

全部评论

相关推荐

书海为家:实习是成为大厂正式员工很好的敲门砖,看您的简历中有一段实习经历,挺好的。我来给一点点小建议,因为毕竟还在学校不像工作几年的老鸟有丰富的项目经验,面试官在面试在校生的时候更关注咱们同学的做事逻辑和思路,所以最好在简历中描述下自己实习时做过项目的完整过程,比如需求怎么来的,你对需求的解读,你想到的解决办法,遇到困难如何找人求助,最终项目做成了什么程度,你从中收获了哪些技能,你有什么感悟。
点赞 评论 收藏
分享
02-28 01:18
已编辑
南昌大学 后端工程师
黑皮白袜臭脚体育生:把开源经历放个人项目上边应该更好,就像大部分人都把实习经历放个人项目上边
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务