我有一个while循环,在while循环的每个itteration中我都是malloc一个struct对象。然后在循环结束时,我将它添加到链表的末尾。现在我担心的是,每当我在循环中使用malloc时,我都有相同的变量名,所以我不知道在将最新的malloced对象附加到链表之后这是如何工作的,我在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
被malloced是没关系的。有人可以向我解释如果我以这种方式使用malloc会发生什么,将它添加到链表的末尾,然后进入下一个循环并执行相同的操作。
答案 0 :(得分:1)
malloc()
调用与您为其指定返回值的变量的名称无关。 malloc()
并不知道您将其返回值分配给名为name
的变量。你所做的是完全有效和明确的定义。
尽管malloc()
返回指向内存区域的指针而不是内存本身,但代码仍然存在错误。因此声明应该是
Student *name = malloc(sizeof (Student));