int *arr[10] 指针数组
(1)先看arr,先和"[10]"结合,说明arr是个数组;
(2)前面是int* ,说明arr数组的元素是int*类型,即int指针。
double a=1.0;
double b=2.0;
double c=3.0;
double *double_arr[3]={&a,&b,&c};
int (*arr)[10]数组指针
(1)先看arr,它和“ * ”结合,*arr 说明 arr是个指针;
(2)再和" [10] "结合,说明,arr指向数组;
(3)前面为int,说明arr指向的数组是 int型。
int arr1[2][3] = { {1,2,3},{4,5,6} };
int(*arr2)[3] = arr1;
上述arr2指向的是arr1,也是指向arr1的第一个元素。
arr2用数组法和指针法来表示arr1的各个组成部分如下:
数组法
表示
arr2[0] ----> {1,2,3}这个数组
arr2[1] ----> {4,5,6}这个数组
arr2[0][1]----> {1,2,3}中的2
arr2[0][2]----> {1,2,3}中的3
指针法
arr2 = &arr2[0] = &arr1[0]
arr2+1 = &arr2[1] = &arr1[1]
*arr2 <-> arr2[0]
*(arr2+1) <-> arr2[1]
*(*arr2+1) = arr2[0][1]
*(*(arr2+1)+1) = arr2[1][1]