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 Students 的大小是 36:因为 32 char 字节 + 4 字节(对于一个 int)= 36 total.

在您的平台上,简单指针占用 32 位。这基本上就是 32 位平台的定义。

白宫的地址不必因为白宫比我的房子大就比我的地址长。

struct Student * 是一个 指针 并且它几乎不包含任何数据,它只是一个指针。但是指针存储在某个地方并占用一些 space,在您的情况下为 4 个字节。

然而,

struct Student 是一个功能齐全的结构,它占用的 space 与您计算的一样多(数组和 id 占用了它们的 space ).