【发布时间】:2016-09-29 01:32:37
【问题描述】:
我目前正在学习 C 语言,但我正在努力理解指针和 malloc() 函数。
所以在我书中的示例中,我定义了以下函数:
island* create(char *name) {
island *i = malloc(sizeof(island));
i->name = strdup(name);
i->opens = "09:00";
i->closes = "17:00";
i->next = NULL;
return i;
}
那么就这样调用了:
char name[80];
fgets(name, 80, stdin);
island *p_island0 = create(name);
在这个代码示例中有几件事我很难理解:
i变量分配给malloc(sizeof(island));时会发生什么情况,它只是临时存储在 HEAP 上分配的新内存空间的引用吗?在
island *p_island0 = create(name);之后,最终在p_island0中存储了什么?由malloc()创建的地址或者是另一个创建的指针,并且前一个i变量的值被复制到... STACK 上的p_island0?
【问题讨论】:
标签: c pointers struct return malloc