0
我想知道爲什麼我的結構值在函數返回後丟失。函數調用值後的C返回結構指針值丟失
struct A {
int val1;
int val2;
}
main() {
struct A *a;
a->val1 = 1;
a->val2 = 2;
calc((void*)a);
// calc returns and a's values are 1 and 2 respectively
}
void calc(void* v) {
struct A *a = (struct A*) v;
...
a->val1 = 2;
a->val2 = 3;
}
在'main':'結構A * A; a-> val1 = 1;'你認爲'a'指向哪裏?除非指向有效內存,否則指針不得解除引用。 – kaylum
'a'應該是堆棧中的地址(如果我錯了,請糾正我)。我試圖將malloc空間用於'a',但仍得到相同的結果。 – Celeste
爲什麼你定義'main()'返回一個'struct A'?你錯過了一個關鍵的分號! –