本帖最后由 番杰 于 2022-2-9 13:12 编辑
(1)char *(*p)[5] 首先看括号里的:*p,所以p是一个指针,
它指向的是一个char *[5],即指针数组;
这个指针数组里有5个指向char类型的指针。
所以,p是一个指向指针数组的指针。
另:char(*)[5]这个才是数组指针,即指向一个内含5个指向char类型的指针。
所以指向数组指针的指针应该这样写:char (*(*p))[5];
(2)至于char *array[5],你理解了第一个问题的话,就好解释多了;
可以看出array是一个数组,一个含有5个char * (即指向char的指针)的数组;
所以它实际存储的并不是一个字符串,而是这个字符串的起始地址;
举个例子:
“FishC”这个字符串的起始地址是:0;(这里的地址只是随便写的,正常地址的长度应该是int类型)
“Fiive”这个字符串的起始地址是:20;
“Start”这个字符串的起始地址是:56;
“Good”这个字符串的起始地址是:88;
“WoW”这个字符串的起始地址是:96;
所以,存储在数组array中的数据则是:[0,20,56,88,96],然后再通过指针去访问字符串。