C++,二维数组作为实参的调用

#include <stdio.h>

void add_one((*p)[2])
{
for(i=0;i<2;i++)
for(j=0;j<2;j++)
p[i][j]+=1;
}

main()
{
int a[2][2]={{0,0},
{0,0}};
add_one(a);
for(i=0;i<2;i++)
{for(j=0;j<2;j++)
printf("%d ",a[i][j]);
printf("\n");}
}

想要学习二维数组作为实参的调用。。。自学了很久都没弄懂,这是仿着网上的一个例子自己写的,执行出来果然很多错。-________-''求帮忙看下错,最好给我一个二维函数作实参的列子,清晰一点的,谢谢~

第1个回答  2014-06-15
长知识了,,,
第2个回答  2014-06-14
二维数组p[m][n]可以理解为m行n列,在作为参数的时候,必须指定每行有多少个数据,就是指定n值,在子函数中使用p[1][0],系统就会从入参开始往后偏移1*n个数之后作为p[1][0]的地址。

修改后的代码如下:
#include <stdio.h>

void add_one(int p[][2])
{
for(int i=0;i<2;i++)
for(int j=0;j<2;j++)
p[i][j]+=1;
}

int main()
{
int a[2][2]={{0,0},
{0,0}};
add_one(a);
for(int i=0;i<2;i++)
{for(int j=0;j<2;j++)
printf("%d ",a[i][j]);
printf("\n");}

return 0;
}本回答被提问者采纳