在这里,我有一个函数f(),它在本地定义一个整数x和一个指向它的指针,pointer_x。它返回该指针。然后,我尝试取消对指针的引用,它仍然为我提供该指针指向的正确整数。我的问题是,如果函数在本地声明一个数组并返回该数组是非法的(由于该函数返回时栈框架的取消分配),为什么函数声明一个指针并返回该指针合法? ?
我的印象是数组本质上是一个指针。
int *f();
int main(void){
int *test;
test = f();
printf("%d", *test); //prints 0
}
int *f(){
int x = 0;
int *pointer_x = &x;
return pointer_x;
}