我很难通过引用将动态分配的数组传递给函数。
“数组应通过引用传递给函数”。
我的程序应使用n个整数,并找出最小值。该最小值应添加到用户输入的所有数组中。但是BY REFERENCE部分杀死了我。我尝试了(int&x [],int&n),但是失败了。
请帮助,非常感谢。

void add_min(int x[], int n)
{
    int add[n];
    int mini = x[0];
    int i;

    for(i = 0; i < n; i++)
    {
        if(x[i] < mini)
        {
            mini = x[i];
        }
    }

    for(i = 0; i < n; i++)
    {
        add[i] = x[i] + mini;
    }

    for(i = 0; i< n ; i++)
    {
        cout<<add[i]<<endl;
    }
}

int main()
{
    int *x;
    int n;
    cout<<"Enter the amount of integers"<<endl;
    cin>>n;
    x = new int[n];

    cout<<"Enter the integers"<<endl;
    for(unsigned i = 0; i < n; i++)
    {
        cin>>x[i];
    }

    add_min(x,n);

    delete x;

    return 0;
}

最佳答案

动态分配的数组不能在命名变量中,并且您不能引用一个。

当您调用new[]时,该数组分配在内存中的某个位置,并且调用返回该数组中第一个对象的地址。您将地址存储在指针变量中。指针不是数组,它仅指向第一个元素。

您可以通过引用指向如下函数的指针:

void foo(int*& ptr)




如果您的作业要求您通过引用传递数组,则您可能无法动态分配数组。在这种情况下,这是将参数声明为对数组的引用的方式:

void foo(int (&arr)[10])


注意,必须在编译时知道大小。您可以使用模板参数为不同大小的数组生成函数。

如果分配确实要求您动态分配数组,则他们可能打算让您按引用传递指针。

10-05 20:50
查看更多