指针指向二位数组的问题!
我调试书上的程序觉得很好奇,对于二位数组a[][],*p,p指向a的首地址,*(p+i)+j等于第i行元素+j,而*(*(p+i)+j)竟然非法!我的是用msdev vc++编写的。vc不是支持这种二位数组表示方式么?贴出类似源程序:
#include<stdio.h>
int main()
{
int a[3][4]={{15,27,32,34},{11,23,323,23},{32,1456,54,656}};
int **p;
p=&a[0][0];
printf("%d\n",*(p+2));
printf("%d\n",*(p+2)+2);//第二行第一列元素加二,并不是第二行第二列元素。
printf("%d\n",*(p+1)+2);//没有得到期待输出。第一行第一列元素加一,并不是第一行第二列元素。
printf("%d\n",*(*(p+1)+1));//error synax。报错。
printf("%d\n",*(p+2*4+3));//a[2][3]
return 0;
}
求教各位大神。