向函数中传输二维数组


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);

}

 

转载于:https://www.cnblogs.com/likeghee/p/9955982.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值