use*_*934 1 c pointers structure sizeof
int main()
{
struct
{
char *name_pointer;
char all[13];
int foo;
} record;
printf("%d\n",sizeof(record.all));
printf("%d\n",sizeof(record.foo));
printf("%d\n",sizeof(record));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我希望结构中指针的大小为"*name_pointer"....
要获得指针大小的使用
printf("%d\n", (int) sizeof(record.name_pointer));
Run Code Online (Sandbox Code Playgroud)
你可能得到2,4,6,8等
要获得指针所指向的数据大小(a char),请使用
printf("%d\n", (int) sizeof(*record.name_pointer));
Run Code Online (Sandbox Code Playgroud)
你应该得到1.
要获取指针指向的字符串的字符串长度,假设record.name_pointer指向合法数据,请使用
printf("%d\n", (int) strlen(record.name_pointer));
Run Code Online (Sandbox Code Playgroud)
BTW正如@alk所说,为什么(int)上面的转换,使用的合适的转换说明符sizeof()包括'z'前缀.结果sizeof()和strlen()类型size_t.虽然size_t并且int通常是相同的,但是有许多系统具有不同的尺寸.由于sizeof()是"无符号整数类型"(C11 6.5.3.4),我建议
printf("%zu\n", sizeof(...
Run Code Online (Sandbox Code Playgroud)