发上等愿,结中等缘,享下等福;择高处立,就平处坐,向宽处行。
分类: C/C++
2011-04-29 17:26:26
恩 很好好强悍!可以帮助你深刻理解数组指针和多维数组的关系。
13 printf("%c\n%c\n", *(*(pa + 5) + 1), *(*(*(ppa + 1) + 2) + 1));
14
15 return 0;
16 }
我的理解和做法:层层分解,步步为营。
首先看a[1][0] char a[4][3][2]去掉a[1][0]
后是char a[2]而去地址&后则为char * a[2] 正好和左边pa一致的类型,那么pa指向的就是a[1][0]
的地址,它指向的元素是一个一维数组~ 那么找‘r’的话 先 *(pa + 5)指向了{‘q’,''r'}这个一位数组的首地址,然后要找‘r’则*(*(pa + 5)+ 1);
讲到这里不知道大家又没有理解,没理解也不用着急,继续下..........
对于第二个:换种方法
从char a[4][3][2]中去掉a[1],剩下 char a[3][2] 那么从char (*ppa)[3][2]中去掉char a[3][2] 剩下 *ppa 再去点& 剩下 ppa 这说明什么呢?说明 ppa 指向a[1] 的首地址,那么找寻‘r’,先*(ppa + 1)找到'r'所在的三维行,然后*(*(ppa + 1) + 2)找到二维行,最后*(*(*(ppa+1)+2)+1)))找到
‘r’这个元素。