我正在尝试定义* 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);
}
答案 0 :(得分:2)
参数arr
是通过值传递的,因此在init_array()
函数中对其进行赋值不会更新main()
中的变量。您需要使其成为参考参数:
int init_array(int* &arr)