我正在使用for循環創建鏈表並在for循環中執行malloc。我得到的問題是在for循環中,malloc
總是返回相同的內存地址!使用malloc在for循環中創建鏈表始終返回相同的地址
我認爲它應該每次迭代都返回一個不同的地址,以便我可以鏈接節點。當前輸出意味着程序總是覆蓋相同的地址,並且我無法鏈接節點,因爲一直只有一個節點。這是對的嗎?
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'的重試值。 – BLUEPIXY
你需要花時間去欣賞指針和指針之間的區別。什麼成立和解決,什麼是這個地址。 – StoryTeller