所以我在看这段代码:C中结构体大小的解释?
#include <stdio.h>
struct Student {
int id;
char name[32];
} s, *sp;
int main() {
printf("sizeof(structStudent) = %u\n", sizeof(structStudent));
printf("sizeof(s) = %u\n", sizeof(s));
printf("sizeof(structStudent*) = %u\n", sizeof(structStudent*));
printf("sizeof(sp) = %u\n", sizeof(sp));
return 0;
}
输出如下:
sizeof(struct Student) = 36
sizeof(s) = 36
sizeof(struct Student*) = 4
sizeof(sp) = 4
为什么是struct Student*
4的大小,以及为什么是sp
也是4的大小?我的powerpoint没有详细说明这一点。我知道为什么struct Student
和s
的大小为36:因为32 char
字节+ 4字节(对于一个int
)= 36总数。
这甚至没有编译。 – EOF
大小为4的指针是32位系统上的指针。 –
'sp'有'struct student *'类型,所以这两个东西报告相同的大小 –