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。
想不清楚是为什么 展开
跑出来p[0],p[1]分别是hello 和 world。
想不清楚是为什么 展开
2个回答
展开全部
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。
比如: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。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询