链接:http://blog.youkuaiyun.com/mishifangxiangdefeng/article/details/8025236
1.字符数组、字符串与string类的区别
例1:
- int main()
- {
- string s;
- cin>>s;
- if(s == "dog")
- cout<<"狗"<<endl;
-
- char ch[10];
- cin>>ch;
- if(ch == "cat")
- cout<<"猫"<<endl;
- return 0;
- }
输出:
dog //输入
狗 //输出
cat //输入
解释:
数组名是该数组第一个元素的内存地址
用引号括起来的字符串也代表该字符串第一个字符的内存地址
这两个地址不可能相等
2.
- char ch1[] = "give me";
- char ch2[] = "a cup";
- ch1 = ch2;
解释:不能将一个数组名赋值给另一个数组名,因为它们都是地址
3.
- char a[] = "aaa";
- char b[] = "bbb";
- strcat(a, b);
- 运行结果:系统崩溃,因为合并后的串会放在a中,但a放不下
4.字符数组的输入:
1)cin:以空格为字符串尾,不处理越界
2)gets:以换行为字符串尾,不处理越界
3)cin.get(数组名,长度,终止输入的限定符):长度 = 字符个数 + 1
5.
- void func(char str[50])
- {
- cout<<sizeof(str)<<' '<<strlen(str)<<endl;
- }
- int main()
- {
- char stra[] = "HelloWorld";
- char *strb = stra;
- cout<<sizeof(stra)<<' '<<sizeof(strb++)<<endl;
- func(++strb);
- cout<<sizeof(stra)<<' '<<strlen(strb++)<<endl;
- return 0;
- }
输出:
11 4
4 9
11 9