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'?你错过了一个关键的分号! –