C语言 以这种方式错误定位对象是否非法



我有一个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));

相关内容

  • 没有找到相关文章

最新更新