int (*pz1)[2]; //pz1指向一个二维数组,里面的元素是含有2个int类型值的一维数组,
int *pz2[2]; //pz2是一个二维数组,里面的元素是含有2个int型指针的一维数组
因为 [] 的优先级高于 * ,所以 pz1 是指针,pz2 是数组。
指向多维数组的指针声明可类比二维数组。
使用范例如下:
#include <stdio.h>
int main()
{
int array[2][3] = {{1,2,3},{4,5,6}};
int(*ptr1)[3] = array;
int *ptr2 = array[0];
int **ptr3 = (int**)array;
int a = 0, b = 0, c = 0, d = 0, e = 0;
printf("array=%lx", array);
a = **array;
b = **ptr1;
c = *ptr2;
d = *ptr3;
e = **ptr3; //不合法
return 0;
}