为什么C允许函数返回本地声明的指针而不返回本地声明的数组?

时间:2018-10-12 20:12:26

标签: c arrays pointers stack

在这里,我有一个函数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;
}

0 个答案:

没有答案