标题:关于指针的困惑
取消只看楼主
邹特强
Rank: 2
等 级:论坛游民
帖 子:123
专家分:85
注 册:2016-9-21
结帖率:85.71%
已结贴  问题点数:20 回复次数:2 
关于指针的困惑
有一段代码是这样:
#include <stdio.h>
int main()
{
    char *name[]={"Follow me","Basic","Great Wall","FORTRAN","computer design"};
    char *p;
   p=*(name+1);
   printf("%s\n",p);
   return 0;  
}
运行正确,但按我的看法,name是指name指定数组首元素的地址,应该是行指针,既然如此,我把其中一句改为
p=name+1为什么不行,等式两边都是地址,应该没问题,但我试着运行,系统出现了警告,[Warning] assignment from incompatible pointer type,运行错误,为什么??我反而觉得源代码的*()是多余的,因为一旦加上*只是把行地址name+1转换为列地址,的确可以,但我的又错在哪?求教该怎么理解
搜索更多相关主题的帖子: computer include 源代码 design return 
2017-02-09 19:07
邹特强
Rank: 2
等 级:论坛游民
帖 子:123
专家分:85
注 册:2016-9-21
得分:0 
回复 2楼 yangfrancis
name本身就是地址啊,为什么会是指向指针的指针???难道这里的name不应该和普通一维数组name[]的name一样吗??都是代笔首元素的地址啊

............
2017-02-10 15:22
邹特强
Rank: 2
等 级:论坛游民
帖 子:123
专家分:85
注 册:2016-9-21
得分:0 
回复 2楼 yangfrancis
懂了,你是对的,指针数组每个元素就是一个地址,而name是指向首元素,当然是char**型

............
2017-02-10 15:33



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-474107-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.415224 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved