敲代码的时候遇到的问题,单独拿出来说一说。
原因是在程序中用sizeof求字符串长度发现总是不对,细看的话不管字符串长度是多少,sizeof得到的结果始终不变,于是查找原因:
如图所示字符串为123时n的值为8,n2为3。
而且不管字符串怎么变n始终为8
这是因为用char*s指针定义字符串,sizeof得到的是指针所占的大小 ,dev c++选择64位的所以指针占用8字节的内存。
用strlen()就能得到字符串的长度。
而如果用字符数组定义字符串,sizeof就能得到字符数组所占空间的大小
此时要注意两点:
1,严格来说求长度应该用sizeof(s)/sizeof(char),因为cha就占一字节所以有没有结果都一样。
2,字符串以’\0’结尾,也会占用内存,所以sizeof会比字符串长度多1
于 2023-07-06 第一次整理编写
学习时整理,不当之处烦请指正
码字不易,留个赞再走吧