C —将2d数组作为函数参数传递?

可以很容易地定义一个接受如下1d array参数的函数:


int MyFunction( const float arr[] )

{    

    // do something here, then return...


    return 1


}

虽然定义,如:  int MyFunction( const float* arr )将正常工作。


如何定义一个接受2d array参数的函数?


我知道int MyFunction( const float** arr )这可行: -但是,可以使用使用的第一个变体[]吗?


qq_花开花谢_0
浏览 494回答 3
3回答

墨色风雨

在C99中,可以在传递数组之前提供数组的尺寸:&nbsp;void array_function(int m, int n, float a[m][n])&nbsp;{&nbsp; &nbsp; &nbsp; for (int i = 0; i < m; i++)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (int j = 0; j < n; j++)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; a[i][j] = 0.0;&nbsp;}&nbsp;void another_function(void)&nbsp;{&nbsp; &nbsp; &nbsp;float a1[10][20];&nbsp; &nbsp; &nbsp;float a2[15][15];&nbsp; &nbsp; &nbsp;array_function(10, 20, a1);&nbsp; &nbsp; &nbsp;array_function(15, 15, a2);&nbsp;}

狐的传说

尝试这样的事情:int MyFunction(size_t ncols, const float arr[][ncols]){&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; // ...}

江户川乱折腾

当我们将2D数组作为参数传递给函数时,可以选择指定最左边的尺寸。此处的关键是何时对函数进行的任何更改都反映在调用函数中,因为当我们将2D数组作为参数传递时意味着实际上是函数接收指向一维数组的指针。大小就是列数。例子1- int funct(int (*a) [4]);这里的a是指向整数数组的指针。我们也可以这样简单地通过2 void funct(int a[][4]);正如我之前说过的,最左侧总是可选的。在第一个示例中,a的大小将为4,因为它通常只是指针。* a的大小为16,因为我们有4列,每列有4个字节,所以4 * 4 = 16个字节。但是最可取的方式是始终使用动态内存分配。我希望你能明白
打开App,查看更多内容
随时随地看视频慕课网APP