有人請向我解釋爲什麼輸出下面的代碼是6而不是5?我不明白如何調用hoo改變m-> x的值。即使在運行代碼並遵循其每一步之後,仍然不清楚。結構和指針。輸出不清楚
#include <stdio.h>
#include <stdlib.h>
typedef struct a {
int x;
struct a* next;
}a_t;
a_t* foo() {
a_t* varp, var = { 5,NULL };
varp = &var;
return varp;
}
a_t* hoo() {
a_t* varp, var = { 6,NULL };
varp = &var;
return varp;
}
void main()
{
a_t* m = foo();
hoo();
printf("%d", m->x);
}
你的代碼是未定義的行爲。 – tilz0R
'var.x'在'foo'之外無效。 – BLUEPIXY
因爲你不能從一個函數返回一個局部變量。您的指針指向您嘗試訪問時已釋放的數據。 SO上有很多重複的內容。 –