char *a[] = { "hello", "world" }; char **p = a; 逻辑是怎么样的啊?a,p是什么,p[0]a[0]呢?

能解释下谁是谁的地址谁是谁的值么。绕晕了。跑出来p[0],p[1]分别是hello和world。想不清楚是为什么... 能解释下谁是谁的地址谁是谁的值么。绕晕了。
跑出来p[0],p[1]分别是hello 和 world。

想不清楚是为什么
展开
 我来答
591017374
推荐于2016-10-04 · TA获得超过434个赞
知道小有建树答主
回答量:122
采纳率:100%
帮助的人:46.4万
展开全部
a是一个一维数组指针(其实就是二维指针)。p是一个二维指针。p和a的地址是一样的。都是字符串“hello”的首地址。不知道这样说行不行。

因为char **p = a是一维数组的指针。也就是说p[0],p[1]指向的是一维数组。p的地址等于a的地址所以,p[0]=a[0],p[1]=a[1].a是一个一维数组指针。里面的元素是一维数组的地址。在这里一维数组分别是“hello”和"world"
繁嬅若梦
2017-09-24
知道答主
回答量:2
采纳率:0%
帮助的人:1806
展开全部
char *a[]是指针数组,其实质是数组,里面存放的是都是地址。
比如:int a=5; int *b[2]; b[0]=&a; 其中:b是该数组的地址,*b等价于b[0]存放的就是a的地址,这个地址中存放的就是5.
而楼主所提的问题中:a、p都是地址。a[0]就是就指向"hello",*a[0]指向"hello"的首字母"h";char **p是二级指针,指向地址的指针,*p就是p[0],等价于a[0]输出的都是"hello",*p[0]等价于*a[0],输出的是"hello"的首字母"h。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式