普通指针
int * ptr
ptr指向一个int类型的值。
如何声明一个指针变量pz指向一个二维数组(例zippo)?
zippo是首元素的地址,该元素是个内含两个int类型的值的一维数组。因此,pz必须指向一个内含两个int类型值的数组,而不是指向一个int类型值,声明如下:
int (*pz)[2]; //pz指向一个内含两个int类型值的数组
以上代码把pz声明为指向一个数组的指针,该数组内含两个int类型值。
为什么要在声明中使用圆括号?因为[ ]的优先级高于,*先与pz结合,因此声明的是一个指向数组(内含两个int类型的值)的指针。
考虑如下声明:
int * pax[2]; /* pax是一个内含两个指针元素的数组,每个元素都指向int的指针*/
由于[ ]优先级高,先与pax结合,所以pax成为一个内含两个元素的数组。然后*表示pax数组内含两个指针。最后,int表示pax数组中的指针都指向int类型的值。因此,这行代码声明了两个指向int的指针。