c++ - 如何通过引用 C++ 传递动态数组

标签 c++ function pointers dynamic dynamic-arrays

我无法理解如何在 C++ 中通过引用传递动态数组。

我在这个独立的小代码示例中重现了这个问题:

#include <iostream>

using namespace std;

void defineArray(int*);

int main()
{
    int * myArray;
    defineArray(myArray);

    /** CAUSES SEG FAULT*/
    //cout<<(*(myArray)); //desired output is 0
    return 0;
}

void defineArray(int*myArray)
{
    int sizeOfArray;
    cout<<"How big do you want your array:";
    cin>>sizeOfArray;

    /** Dynamically allocate array with user-specified size*/
    myArray=new int [sizeOfArray];

    /** Define Values for our array*/
    for(int i = 0; i < sizeOfArray; i++)
    {
        (*(myArray+i))=i;
        cout<<(*(myArray+i));
    }
}

最佳答案

myArray 是通过值本身传递的,对 myArray 的任何修改(例如 myArray=new int [sizeOfArray];)与处理原始变量, main() 中的 myArray 仍然悬空。

要使其通过引用传递,请更改

void defineArray(int*myArray)

void defineArray(int*& myArray)

关于c++ - 如何通过引用 C++ 传递动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39929041/

相关文章:

android - 我可以在 Embarcadero C++Builder 中为 Android (*.so) 构建共享库吗?

c++ - 在 'insert' 之后重新使用迭代器进入 vector

MySQL 错误 - "Not allowed to return a result set from a function"

结构内的 C 语言 : Way to access a field in a structure,(这个有点棘手)

c++ - char 双指针程序中的访问冲突

c - 用静态关键字 : what is static, 声明的数组是指针还是整个数组?

c++ - 缓存行、错误共享和对齐

c# - 当 64 位非托管代码通过 COM 调用托管代码时会发生什么

function - 如何在Python 3.2中退出?

c - 指向字符串数组的指针在函数中可以,但在外部不行