C中结构大小的解释?

-2 c struct sizeof

所以我在看这段代码:

#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;
}
Run Code Online (Sandbox Code Playgroud)

输出如下:

sizeof(struct Student) = 36
sizeof(s) = 36
sizeof(struct Student*) = 4
sizeof(sp) = 4
Run Code Online (Sandbox Code Playgroud)

为什么尺寸为struct Student*4,为什么尺寸sp也是4?我的powerpoint没有详细说明这一点.我知道为什么的大小struct Students为36:因为32个char(对于一个字节+4字节int)= 36总.

For*_*Bru 5

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

struct Student但是,它是一个功能齐全的结构,占用的空间与您计算的数量相同(数组和id占用空间).