#include <stdio.h>
#define N 3
#define M 4
/**********found**********/
void fun(int (*a)[N], int k)
{ int i,j,temp ;
/**********found**********/
for(i = 0 ; i < N ; i++)
{ temp=a[0][i] ;
/**********found**********/
a[0][i] = a[k][i] ;
a[k][i] = temp ;
}
}
main()
{ int x[M][N]={ {1,2,3},{4,5,6},{7,8,9},{10,11,12} },i,j;
printf("The array before moving:\n\n");
for(i=0; i<M; i++)
{ for(j=0; j<N; j++) printf("%3d",x[i][j]);
printf("\n\n");
}
fun(x,2);
printf("The array after moving:\n\n");
for(i=0; i<M; i++)
{ for(j=0; j<N; j++) printf("%3d",x[i][j]);
printf("\n\n");
}
}
数组a 定义的时候是int (*a)[N], 貌似是一个一维数组,单后面却当成二维数组来使用,如temp=a[0][i] 这是为什么?
* 号在C里代表指针,你亩羡饥可以这么理解,这个定义是定义了一个一维指派陪针组,然后指针又形成一个数组,就相当于迅返是一个二维数组。
int (*a)[N];
不是定义一维数组,而是定义一个指向一维数组的指针,即数组指针
数组指针本质是指针,只消扒不过其指向的是数组,例如int (*a)[10];
指针数组本质是数组,只不过其元素都是指瞎数针,例磨桥首如int *a[10];
int (*a)[n] 是数组指针蔽念可以看作是二银纳维数组。
int* a[n] 是锋并没指针数组 =========一维数组。