这个问题已经在这里有了答案:




已关闭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)调用它。

10-08 20:03