我很难通过引用将动态分配的数组传递给函数。
“数组应通过引用传递给函数”。
我的程序应使用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])
注意,必须在编译时知道大小。您可以使用模板参数为不同大小的数组生成函数。
如果分配确实要求您动态分配数组,则他们可能打算让您按引用传递指针。