二维数组如何做实参

在做题过程中发现,有时候需要将一个二维数组传递到另外一个函数中去。

假如为栈数组,可以这样做:

void Fun(int* dp, int m, int n) {

if(*((dp+i*n)+j)==3) { //*((dp+i*n)+j)为dp[i][j]

......

}

}


main {

int dp[m][n];

Fun((int*)dp, m, n);

}

也就是说,需要将dp强制转化为一个int指针,作为实参传进Fun函数。

假如为动态数组,可能更复杂一些。

void Fun(int** dp) { //注意这里的参数类型

dp[i][j] //可以直接通过下标的方式,访问dp[i][j]

}

main {

int **dp = new int*[m]; //定义指针数组dp

for(int i = 0 ; i <m; i++)
dp[i] = new int[n];  //对于指针dp[i],开辟一个大小为n的一维数组,使得dp[i]指向这个数组

for(int i = 0; i<m; i++) //先释放各个一维数组

delete[](dp[i]);

delete []dp; //释放指针数组

}


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值