c风格字符数组与字符串
对于字符数组后面是否要加‘\0’,有以下几种情况:
第一种: char str[10] = {‘h’,’e’,’l’,’l’,’o’};
如果大括号中的字符个数小于字符数组的长度,则把大括号中的字符赋给数组中前面的元素,其余元素自动赋值为空字符(即‘\0’)。
第二种:char str[5] = {‘h’,’e’,’l’,’l’,’o’};
对于大括号中的字符个数和数组长度相同,系统不会自动添加’\0’。对于这种赋值方式,需要手动添加‘\0’;
即:char str[6] = {‘h’,’e’,’l’,’l’,’o’, ‘\0’};
第三种:char str[] = “hello”;
第四种:char *str = “hello”;
测试:
char str1[10] = {'h','e','l','l','o'};
char str2[5] = {'h','e','l','l','o'};
char str3[] = "hello";
char *str4 = "hello";
cout << sizeof(str1) << " " << strlen(str1) << endl;
cout << sizeof(str2) << " " << strlen(str2) << endl;
cout << sizeof(str3) << " " << strlen(str3) << endl;
cout << sizeof(str4) << " " << strlen(str4) << endl;
//输出
10 5
5 5
6 5
8 5
sizeof()会将‘\0’也当做一个字符并计入结果,而strlen()不会计入‘\0’;
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 876208453@qq.com
文章标题:c风格字符数组与字符串
本文作者:Cai Jun
发布时间:2019-03-20, 17:58:03
最后更新:2019-03-20, 06:15:02
原始链接:http://johncaijun.github.io/2019-03-21-c风格字符数组与字符串/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。