这个问题已经在这里有了答案:
已关闭8年。
我的问题与将数组作为C++函数参数传递有关。让我先显示示例:
void fun(double (*projective)[3])
{
for(int i=0; i<3; i++)
for(int j=0; j<3; j++)
{
projective[i][j]= i*100+j;
}
}
int main()
{
double projective[3][3];
fun(projective);
for(int i=0; i<3; i++)
{
cout<<endl;
for(int j=0; j<3; j++)
cout<<projective[i][j]<<" ";
}
return 0;
}
在示例中,
fun
的传递参数是一个数组,我想知道是否还有其他方法传递该参数。谢谢! 最佳答案
fun
接受一个指向3-double的数组的指针,并假定(依赖于调用者)该指针指向至少3个double-double的数组的数组的第一个元素。之所以这样做,是因为您在main
中提供给调用的参数是一个数组。这立即衰减为指向其第一个元素的指针。
一种替代方法是让fun
采取指向3x3数组 double 的指针,因为无论如何它都假定大小,并且调用者实际上确实有这种野兽:
void fun(double (*p_projective)[3][3])
{
for(int i=0; i<3; i++)
for(int j=0; j<3; j++)
{
(*p_projective)[i][j]= i*100+j;
}
}
用
fun(&projective)
调用它。