Shi*_*hik 1 c string pointers sizeof
#include<stdio.h>
main()
{
char *str[]= {"Frogs","do","not","die","they","croak"};
printf("%d %d %d",sizeof(str),sizeof(str[0]),sizeof(char));
}
Run Code Online (Sandbox Code Playgroud)
输出是:
48 8 1
据大小char存在1字节,有六个字符变量数组所以总规模应该6不是48!
Sou*_*osh 10
第1点
sizeof重新调整数据类型的大小,而不是分配给变量的内存量.
对于它的价值,如果你想测量一个字符串的长度(即字符串中的元素数量),你可以使用strlen()
第2点
不要混淆数据类型.
str是一个指针数组.它保存6的指针,所以sizeof将给出6 * sizeof(<pointer type>)其是6 * 8或48在64位的系统.str[0]是一个指针,所以sizeof str[0]等于sizeof(char *)其是8在64位的系统.C标准保证sizeof(char)等于1.第3点
sizeof运营商返回一个size_t.您需要使用%zu格式说明符来便携且可靠地打印.