gpt4 book ai didi

c - 结构指针的内存分配

转载 作者:太空宇宙 更新时间:2023-11-04 06:19:05 24 4
gpt4 key购买 nike

如果有如下结构:

struct student {
int id;
int marks;
} *S1,S2;

为什么要给*S1分配内存而不给S2分配内存?当*S1 声明为结构指针时,是否没有分配内存?内存是否仅在我们显式分配时分配?

最佳答案

在 C 中,每个变量都是一个内存位置。在您的示例中, S1 和 S2 都是变量,但是 S1 恰好是指针。指针是一个变量,它的目的是定义为保存内存位置的地址。

在您的示例中,S2 是 struct student 类型的普通变量,指向一个大小为 sizeof(struct student) 的内存位置。 S1 是一个指针变量,指向一个内存位置,其大小等于指针变量的大小(通常 32 位系统为 4 个字节,64 位系统通常为 8 个字节)。

正如您需要为普通变量赋值一样,您需要将内存位置的地址分配给一个指针,这就是您在分配内存并赋值给它时所做的。

关于c - 结构指针的内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39171584/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com