这个是数组指针、指针数组、二维数组之间相互转换的代码
1 #include<stdio.h> 2 void main() 3 { 4 int a[2][4]={1,2,3,4,5,6,7,8}; 5 int *b=NULL; 6 int **c; 7 int (*d)[4]; 8 9 int * e[5]; 10 b=*(a+1)+1; 11 e[0]=&a[0][0]; 12 d=a; 13 //a[][] equal **c equal (*d)[] 14 15 //about (*d)[4] **d 16 printf("about (*d)[4] **d (*(d+1)[1]) "); 17 printf("(*d)[0]:%d (*(d+1)[1]):%d **d:%d *(*d+1):%d *(*(d+1)+1):%d ",(*d)[0],( 18 *(d+1))[1],**d,*(*d+1),*(*(d+1)+1)); 19 20 //about *(a[0]+1) **(a+1) *(*(a+1)+1) !!!!! 21 printf("about *(a[0]+1) **(a+1) *(*(a+1)+1) "); 22 printf("a[1][2]:%d ",a[1][2]); 23 printf("*b:%d ",*b); 24 printf("*(*a+1):%d *(*(a+1)):%d *(a[0]):%d **a:%d ",*(a[0]+1),**(a+1),*(a[0]),* 25 *a); 26 printf("*(*(a+1)+1):%d *(*(a)+2):%d *(a[0]+1):%d ",*(*(a+1)+1),*(*(a)+2),*(a[0]+ 27 2)); 28 printf("about *e[0]"); 29 printf("*e[0]:%d ",*e[0]); 30 }
输出结果
1 about (*d)[4] **d (*(d+1)[1]) 2 (*d)[0]:1 3 (*(d+1)[1]):6 4 **d:1 5 *(*d+1):2 6 *(*(d+1)+1):6 7 about *(a[0]+1) **(a+1) *(*(a+1)+1) 8 a[1][2]:7 9 *b:6 10 *(*a+1):2 11 *(*(a+1)):5 12 *(a[0]):1 13 **a:1 14 *(*(a+1)+1):6 15 *(*(a)+2):3 16 *(a[0]+1):3 17 about *e[0]*e[0]:1