c语言指针数组的问题
char*p[3]={"abcde","fghi","jklmdkf"};这句话中p代表什么,*p代表什么,为什么我想输出第一个字符串时%s对应的需要写成*p,而不是p...
char *p[3] = {"abcde","fghi","jklmdkf"};
这句话中p代表什么,*p代表什么,为什么我想输出第一个字符串时%s对应的需要写成*p,而不是p 展开
这句话中p代表什么,*p代表什么,为什么我想输出第一个字符串时%s对应的需要写成*p,而不是p 展开
6个回答
展开全部
因为p[3]是个数组 含有三个元素 char *则表明其为指针数组 即这个数组里面的元素是有指针组成 这三个指针分别指向字符串"abcde","fghi","jklmdkf”,因为*P代表的是指向"abcde"的指针也是p[0] 例如main{char *f="abcdest";printf("%s",f);}输出结果;abcdest 上面*P等同于f
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
个人理解,我也是新手:
p、&p[0]、&a 这3个等价,都是数组的首地址
*p代表p[0]的值,就是字符串"abcde"
输出第一个字符串,%s对应*p(*p是p[0]的值)是不会错
但为什么不能写成p(p是p[0]的首地址),这个我也不明白。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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); // 输出三个字符串
*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); // 输出三个字符串
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
*p[3]是指针数组地址。p[3]是数组懂吧。
输出时不需要指针地址了,因为已经调用。
输出时不需要指针地址了,因为已经调用。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询