第1个回答 2013-05-30
因为p[3]是个数组 含有三个元素 char *则表明其为指针数组 即这个数组里面的元素是有指针组成 这三个指针分别指向字符串"abcde","fghi","jklmdkf”,因为*P代表的是指向"abcde"的指针也是p[0] 例如main{char *f="abcdest";printf("%s",f);}输出结果;abcdest 上面*P等同于f
第2个回答 2013-05-30
个人理解,我也是新手:
p、&p[0]、&a 这3个等价,都是数组的首地址
*p代表p[0]的值,就是字符串"abcde"
输出第一个字符串,%s对应*p(*p是p[0]的值)是不会错
但为什么不能写成p(p是p[0]的首地址),这个我也不明白。
第3个回答 2013-05-30
p[3]表明是数组,*p[3]表明是指针的数组(每个元素都是指针)
*p 与 p[0]等价
int i;
char *p[3] = {"abcde","fghi","jklmdkf"};
char **q = p;
for(i = 0; i < 3; ++i, ++q) printf("%s\n",*q); // 输出三个字符串本回答被提问者和网友采纳
第4个回答 2013-05-30
*p[3]是指针数组地址。p[3]是数组懂吧。
输出时不需要指针地址了,因为已经调用。