函数返回数组作为指针

时间:2014-11-09 14:18:28

标签: c++ arrays

我试图实现一个简单的函数,它返回指向数组中第一个元素的指针。

#include<iostream>
using namespace std;
int * func(int n)
{
    int arr[n];
    for (int a = 0; a <n; a++)
    {
        arr[a]=a;
    }
    return arr;
}
int main()
{
    int n;
    cin>>n;
    int * arr=func(n);
    for (int i = 0; i <n; i++)
    {
        cout<<*(arr+i)<<endl;
    }

 }

我假设数组占用连续的内存块,那么为什么这个程序的输出不是预期的。

如果n = 10则输出

0
-1216233191
-1215824576
-1215824576
-1215855028
-1215820256
-1074779464
-1215820256
-1074779464
134514382

1 个答案:

答案 0 :(得分:2)

int * func(int n)
{
    int arr[n];       <<<<<<<<<<<<<<<local variable to this function.
    for (int a = 0; a <n; a++)
    {
        arr[a]=a;
    }
    return arr;
}

你不应该返回局部变量的地址......