我有一个while循环,在while循环的每次迭代中,我都会malloc一个结构对象。然后在循环结束时,我将其添加到链表的末尾。现在我担心的是,每次在循环中 malloc 时我都有相同的变量名称,所以我不明白在我将最新的 malloced 对象附加到链表后这是如何工作的,我错误定位的其他对象会发生什么同名。
我的代码:
struct Student{
char *name;
int IDno;
}Student;
someFunction(){
x = 0;
while(x!=6){
Student *name = malloc(sizeof(Student)); <----- Confusion here
addToLinkedList(LinkedListStruct,name);
}
我每次在循环中都被错误定位name
好吗?有人可以向我解释如果我以这种方式 malloc,将其添加到链表的末尾,然后进入下一个循环并执行相同的操作会发生什么。
malloc()
调用与为其赋值的变量的名称无关。 malloc()
不知道您将其返回值分配给名为 name
的变量。你所做的是完全有效和明确定义的。
不过,您的代码仍然存在错误,因为malloc()
返回指向内存区域的指针,而不是内存本身。因此,声明本应是
Student *name = malloc(sizeof (Student));