用数组时,必须要知道二维数组的后一个维度,否则无法正确修改,比如:
void modify(int a[][10])
{
a[1][2] = 12;
a[2][5] = 25;
}
void main()
{
int a[5][10];
a[1][2] = 0;
a[2][5] = 0;
modify(a);
printf("a(1,2)=%d, a(2,5)=%d\n",12, 25);
}
用指针方式实现时要注意二维数组的建立过程。比如以上的int a[5][10],用指针实现相同功能的代码如下:
void modify(int **a)
{
a[1][2] = 12;
a[2][5] = 25;
}
void main()
{
int **a;
a = (int **) malloc( sizeof(int *) *5);
for(int i=0 ; i<5 ; i++)
a[i]=(int *) malloc(sizeof(int)*10);
a[1][2] = 0;
a[2][5] = 0;
modify(a);
printf("a(1,2)=%d, a(2,5)=%d\n",12, 25);
}
取消
评论