有人请向我解释为什么输出下面的代码是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上有很多重复的内容。 –