看下面一个程序,a为常指针,把p当成一个指向指针的指针就行了.运行一下这个你就会明白了# include <stdio.h>void main ( ){ int a[10]={7,8,6,5,4,32}; int (*p)[10]; int i; p=&a; for(i=0;i<10;i++) { printf("a[%d]=%d\n",i,a[i]); printf("(*p)[%d]=%d\n",i,(*p)[i]); }}
“右左法则” P最先与谁结合那么P就是什么*p[],P是各数组;(*p)[]P是个指针,更多的情况你可以看《C专家编程》那里说得很详细。
int *p[4];由于[]比*优先级高,所以p先与[4]结合,形成p[4]形式,这显然是数组形式,它有四个元素。然后再与p前面的“*”结合,“*”表示此数组是指针类型的,每个元素都是指针并且每一个指针指向int型变量。int(*p)[4]由于()使得“*”先与p结合形成指针,这个指针再指向int型的数组,并且该数组有四个int型元素;
[此贴子已经被作者于2007-3-10 23:43:01编辑过]