向函数中传输二维数组

Posted likeghee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了向函数中传输二维数组相关的知识,希望对你有一定的参考价值。


void xxx (int **a, int r . int c){  // r代表行 , c代表列

  //在转变后的函数中,array[i][j]这样的式子是不对的,因为编译器不能正确的为它寻址,所以我们需要模仿编译器的行为把array[i][j]这样的式子手工转变为

                                                     *( (int*) a + c* (i)  +  (j) );

}

    int a[3][3] = 
    {
      {1, 1, 1},
      {2, 2, 2},
      {3, 3, 3}
    };

 

xxx( (int **)a , 3 ,3 ) ; //强制转换并调用函数

 

例子 : 打印输出二维数组函数

#include <iostream>
using namespace std;

void print_array ( int**a , int r , int c ) {

  for (int i = 0; i < r; i++)
  {
    for ( int j = 0 ; j<c ; j++)
      {
        cout << *((int*) a + c* (i) + (j)) ;
        if(j == c-1 ) cout <<endl;
      }
  }
}

 

int a[3][3] =
{
  {1, 1, 1},
  {2, 2, 2},
  {3, 3, 3}
};

int main(){

print_array ((int **) a ,3,3);

}

 

























以上是关于向函数中传输二维数组的主要内容,如果未能解决你的问题,请参考以下文章

二维数组地址传递的问题,求帮助~

编写一函数,将一个3×3的整型二维数组行列互换

opencl核函数怎么传二维数组实参

C语言如何在子函数中对主函数中的二维数组值进行修改? 二维数组已经在主函数中用动态数组分配了空间。

php值用二维数组怎么保存数据

数组参数和指针参数