C中结构大小的解释?
Explanation for the size of structs in 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?我的幻灯片没有详细说明这一点。我知道为什么 struct Student
和 s
的大小是 36:因为 32 char
字节 + 4 字节(对于一个 int
)= 36 total.
在您的平台上,简单指针占用 32 位。这基本上就是 32 位平台的定义。
白宫的地址不必因为白宫比我的房子大就比我的地址长。
struct Student *
是一个 指针 并且它几乎不包含任何数据,它只是一个指针。但是指针存储在某个地方并占用一些 space,在您的情况下为 4 个字节。
然而,struct Student
是一个功能齐全的结构,它占用的 space 与您计算的一样多(数组和 id
占用了它们的 space ).
所以我正在查看这段代码:
#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?我的幻灯片没有详细说明这一点。我知道为什么 struct Student
和 s
的大小是 36:因为 32 char
字节 + 4 字节(对于一个 int
)= 36 total.
在您的平台上,简单指针占用 32 位。这基本上就是 32 位平台的定义。
白宫的地址不必因为白宫比我的房子大就比我的地址长。
struct Student *
是一个 指针 并且它几乎不包含任何数据,它只是一个指针。但是指针存储在某个地方并占用一些 space,在您的情况下为 4 个字节。
struct Student
是一个功能齐全的结构,它占用的 space 与您计算的一样多(数组和 id
占用了它们的 space ).