首页 > 解决方案 > 函数总是返回指向空的指针

问题描述

为什么createArray函数返回指向0的指针?我想,我应该使用 malloc 来修复它,但为什么呢?

   int *createArray(int size)
{
    int i;
    int arr[size];

    i = 0;
    while (i < size)
    {
        arr[i] = i;
        i++;
    }
    return arr;
}

int main()
{
    int *ar;
    printf("%i", (createArray(10)));
}

标签: cpointers

解决方案


arr 变量在堆栈上分配。从您的函数返回时,堆栈被释放。然后,您返回的指针将指向可能设置为 null 的无效内存位置。


推荐阅读