今天看见同事的代码里面有:sizeof("some_name"),马上就开始质疑代码的正确性。
在记忆里,双引号内的字符串相当于一个常量指针,而对一个常量指针取sizeof()的话,一定是4。
于是叫来同事和他理论,他坚持说sizeof("some_name")=10。
不信,于是写代码试试…………果然是10!!!
恩,恩,看来,此处的sizeof("some_name")等同于
char str[] = "some_name";
printf("%d\n", sizeof(str));
相当于是对字符串数据求大小,而不是字符串指针!!!
丢人,自以为基础不错,看来还得继续复习下基础了。
在记忆里,双引号内的字符串相当于一个常量指针,而对一个常量指针取sizeof()的话,一定是4。
于是叫来同事和他理论,他坚持说sizeof("some_name")=10。
不信,于是写代码试试…………果然是10!!!
恩,恩,看来,此处的sizeof("some_name")等同于
char str[] = "some_name";
printf("%d\n", sizeof(str));
相当于是对字符串数据求大小,而不是字符串指针!!!
丢人,自以为基础不错,看来还得继续复习下基础了。
字符串大小计算误区
本文讨论了一个关于使用 C 语言中的 sizeof 运算符计算字符串大小的常见误区。作者原本认为 sizeof 应用于字符串字面量时会返回指针大小,但实际测试表明它返回的是字符串的长度加上终止符。通过对比不同情况下 sizeof 的使用,揭示了这一概念上的误解。
512

被折叠的 条评论
为什么被折叠?



