指针中的()有特殊作用,能把二维数组变成一维数组来处理,不仅(*p)[n]可以,*p[n]可以,就连a[n][n]也不例外, #include <stdio.h> main() { int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int (*p)[3]; int *q[3];
char e[]="8876578"; char *w="8876578";
char c[3][30]={"abcd dijf","ewuh uh","ejfiejf jiiejrf iejfijf"}; char *b[]={"abcd dijf","ewuh uh","ejfiejf jiiejrf iejfijf"};
p=a;
q[0]=a[0]; q[1]=a[1]; q[2]=a[2];
printf("%o %o %o %o\n",p,p[0],p[1],p[2]); printf("%d %d %d %d %d %d %d %d %d %d\n",p,*p[0],*p[1],*p[2],*(p+0),*(p+1),*(p+2),*(p+3),*(p+4),*(p+5)); printf("%o %d %d\n",*p,p[2][5],p[1][2]); printf("%d %d %d %d %d %d %d %d %d %d %d %d\n",(*p)[0],(*p)[1],(*p)[2],(*p)[3],(*p)[4],(*p)[5],(*p)[6],(*p)[7],(*p)[8],(*p)[9],(*p)[10],(*p)[11]); printf("%d %d %d %d %d %d %d %d %d %d %d %d\n",(*a)[0],(*a)[1],(*a)[2],(*a)[3],(*a)[4],(*a)[5],(*a)[6],(*a)[7],(*a)[8],(*a)[9],(*a)[10],(*a)[11]);
printf("%o %o %o %o\n",q,q[0],q[1],q[2]); printf("%o %d %d %d %d %d %d\n",q,*q[0],*q[1],*q[2],q[1][2],q[1][6],(*q)[10]);
printf("%s %d\n",e,e); printf("%s %d\n",w,w);
printf("%s\n%s\n",c[1],b[1]); getch(); }
[此贴子已经被作者于2005-1-12 22:49:32编辑过]