我将相同的字符串值分配给指针和char数组
char *str = "hello" "world";
char str1[] = "hello" "world";
Run Code Online (Sandbox Code Playgroud)
然后使用sizeof()函数返回它们的长度
sizeof(str); // on my computer, it's 8 !!
sizeof(str1); // return 11, which is right
Run Code Online (Sandbox Code Playgroud)
但是它们都可以通过以下方式打印出来%s:
printf("%s\n%s\n", str, str1);
Run Code Online (Sandbox Code Playgroud)
那么为什么sizeof(str);返回错误的值呢?
那么为什么sizeof(str);返回错误的值?
它不会因为sizeof返回其操作数类型的字节大小.从6.5.3.4节C99标准(草案编号n869)的尺寸操作符,第2节:
的
sizeof操作者产生其操作数的大小(以字节为单位),其可以是表达或类型的括号名称.大小由操作数的类型确定.结果是整数.如果操作数的类型是可变长度数组类型,则计算操作数; 否则,不评估操作数,结果是整数常量.
因此:
sizeof(str) == sizeof(char*)
sizeof(str1) == sizeof(char[11])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2537 次 |
| 最近记录: |