【发布时间】:2017-03-09 06:14:54
【问题描述】:
我正在创建一个带有 for 循环的链表,并在 for 循环中执行 malloc。我遇到的问题是在 for 循环内部,malloc 总是返回相同的内存地址!
我认为它应该在每次迭代时返回一个不同的地址,以便我可以链接节点。当前输出意味着程序总是覆盖相同的地址,我无法链接节点,因为一直只有一个节点。对吗?
struct list_node {
char *id;
char *url;
struct list_node *next;
};
int main(void) {
int j;
for (j = 0; j < 5; j++) {
struct list_node *new_node = malloc(sizeof(struct list_node));
printf("No %d has address %p\n", j, &new_node);
}
}
=>
No 0 has address 0x7fff5db122b0
No 1 has address 0x7fff5db122b0
No 2 has address 0x7fff5db122b0
No 3 has address 0x7fff5db122b0
No 4 has address 0x7fff5db122b0
有人知道这件事吗?
【问题讨论】:
-
&new_node-->new_node:new_node保持malloc的返回值。&new_node是new_node的地址,不是malloc的返回值。 -
您需要花时间来了解指针和指针之间的区别。什么持有和地址,以及该地址的内容。
标签: c for-loop linked-list malloc