簡體   English   中英

C ++函數中的新運算符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM