C ++函数中的新运算符

时间:2018-07-24 20:04:28

标签: c++ pointers

我正在尝试定义* arr的大小并在init_array函数中为其分配内存。但这导致segmentation fault。我究竟做错了什么?如何获得此结果?

#include<iostream>

using namespace std;
int init_array(int* arr)
{
    int n;
    cout<<"Number of elements? ";
    cin>>n;
    arr = new int[n];
    for(int j=0; j!= n; j++)
        arr[j] = j*j;
    return n;
}

int main()
{
    int *arr=nullptr;
    int n;
    n = init_array(arr);
    for(int i=0; i!=n; i++)
        cout<<*(arr+i);
}

1 个答案:

答案 0 :(得分:2)

参数arr是通过值传递的,因此在init_array()函数中对其进行赋值不会更新main()中的变量。您需要使其成为参考参数:

int init_array(int* &arr)