【发布时间】:2017-01-03 10:31:26
【问题描述】:
如果有如下结构:
struct student {
int id;
int marks;
} *S1,S2;
为什么需要分配内存给*S1 而不是S2?当 *S1 被声明为结构指针时,是否没有分配内存?只有当我们显式分配时才分配内存吗?
【问题讨论】:
-
谁说需要什么?
-
内存自动分配给 S1。正好有足够的内存来表示一个指针。你可以指向任何你喜欢的地方,即使是未分配的内存,它将是一个指向无效
struct student的有效指针。 -
为指针本身分配了内存,但在您分配
student并将指针分配到该内存的位置之前,如果未初始化,指针将指向垃圾。 S2 的分配方式与指针 S1 的分配方式相同;但一个是student,一个是指针。指针本身的内存和它所指向的内容是完全不同的东西。 -
@Tibrogargan - 这不是一个真正有效的指针......
-
是的,内存仅在您明确分配时才分配给
*S1。与S2相反,struct是实际的struct,而不是指针。