char a[3]={'w','d','\0'};
char (*p)[3]=&a;
*p,由于被用括号括住,所以必须作为一个整体看待,比如用b代替*p,就成了
char b[3] = &a,在引用时,(*p)[1]正是'd',但p是一个指向3 char的指针,p+1的地址是向前跳3字节,这样p就相当于是二维数组的首地址,数组储存的是一堆指针。
(*p)[0]=a[0]='w'
(*p)[1]=a[1]='d'
(*p)[2]=a[2]='\0'
除此之外,使用p指针指向其他位置,都是未初始化的内存空间。
描红那个代码,并不能严格反映原代码的意义,因为很难找到准确匹配的写法,只能写成那样。但无论如何,原代码那种写法,是很难理解的,而且没发现有什么实用意义。
看看测试结果,特别留意后两列的地址:
图片附件: 游客没有浏览图片的权限,请
登录 或
注册
[
本帖最后由 TonyDeng 于 2013-2-13 14:50 编辑 ]