可能重复:
可以在其范围之外访问局部变量的内存吗?
我最近遇到了以下代码:
#include <stdio.h>
int* abc () {
int a[3] = {1,10,100};
return a;
}
int* xyz () {
int b[1] = {222};
return b;
}
int main() {
int *a, *b;
a = abc();
b = xyz();
printf("%d\n", *a);
return 0;
}
输出是222
。'a'
指向在xyz()
.
我的问题是:
为什么 a 指向里面声明的数组
xyz()
。函数内部声明的数组
xyz()
应该在函数执行后超出范围。为什么那没有发生?