c语言指针数组的问题

char*p[3]={"abcde","fghi","jklmdkf"};这句话中p代表什么,*p代表什么,为什么我想输出第一个字符串时%s对应的需要写成*p,而不是p... char *p[3] = {"abcde","fghi","jklmdkf"};
这句话中p代表什么,*p代表什么,为什么我想输出第一个字符串时%s对应的需要写成*p,而不是p
展开
 我来答
百度网友7c2d04babf
2013-05-30
知道答主
回答量:19
采纳率:100%
帮助的人:13.7万
展开全部
*p[3]指的是一个指针数组,是一个数组,数组存放的是什么呢?是指向char类型的指针。也就是说此数组有三个空间,分别存储字符串“abcde”中的第一个字符的地址,也就是a的地址。“fghi”中的第一个字符的地址,也就是f的地址。“jklmdkf”中的第一个字符的地址,也就是j的地址。然而*p又表示数组的首地址,所以*p也就是第一个字符串了;*(p++)则表示第二个字符串的首地址;
而p则表示指向char类型指针本身;这样说不知道你能明白不!
你的眼神那么令
2013-05-30
知道答主
回答量:1
采纳率:0%
帮助的人:1498
展开全部
因为p[3]是个数组 含有三个元素 char *则表明其为指针数组 即这个数组里面的元素是有指针组成 这三个指针分别指向字符串"abcde","fghi","jklmdkf”,因为*P代表的是指向"abcde"的指针也是p[0] 例如main{char *f="abcdest";printf("%s",f);}输出结果;abcdest 上面*P等同于f
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
M丶小民子
2013-05-30 · TA获得超过185个赞
知道小有建树答主
回答量:122
采纳率:0%
帮助的人:99.3万
展开全部

个人理解,我也是新手:

 

  1. p、&p[0]、&a  这3个等价,都是数组的首地址

  2. *p代表p[0]的值,就是字符串"abcde"

  3. 输出第一个字符串,%s对应*p(*p是p[0]的值)是不会错

    但为什么不能写成p(p是p[0]的首地址),这个我也不明白。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xoaxa
2013-05-30 · TA获得超过8611个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3489万
展开全部
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); // 输出三个字符串
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jztao21
2013-05-30 · TA获得超过1558个赞
知道小有建树答主
回答量:1151
采纳率:50%
帮助的人:781万
展开全部
*p[3]是指针数组地址。p[3]是数组懂吧。

输出时不需要指针地址了,因为已经调用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式