char类型的字符数组中的'\0'问题


字符数组保存时有可能最后一位有‘\0’,需要注意。参考:

char a[] ="abcd";  //这样赋值最后一位会有隐含的‘\0’; 用cout输出来看到的还是abcd

并且有:

sizeof(a) == 5;

strlen(a) == 4;
char a[5] = "abcde";            //会报错,最后要留一位给‘\0’

char a[5] = {'a','b','c','d','d'}; //没问题,没有\0的,sizeof(a) == 4

 

char* a = “abcde”;

sizeof(a) == 4;                    // 这个是a这个指针的长度,不是数组长度

strlen(a) == 5;                    // 这个是该数组长度

 

strlen:从数组指针开始,直到找到’\0’结束,这中间的字符个数;

如果char* 类型变量不是用常量直接初始化的,那么在赋值结束时一定要手动添加一个’\0‘(分配空间时,也需要多分配一个char空间),这样用strlen才可以正确得返回长度,后面的使用也不会有问题,例如:没有加’\0‘时,这个变量作为参数传入函数就出了问题invalid_argument。

 

最后一位的’\0‘不参与计算==》》 a[strlen(a)-1] == e;


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM