[英]new operator in a function C++
我試圖定義* 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);
}
參數arr
由值傳遞,因此在init_array()
函數中對其進行分配不會更新main()
的變量。 您需要使其成為參考參數:
int init_array(int* &arr)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.