• 欢迎访问C语言网www.dotcpp.com 比赛栏每月有奖月赛!举办比赛联系QQ:2045302297
  • 问题反馈、粉丝交流 QQ群327452739 蓝桥杯训练群:113766799 申请群时请备注排名里的昵称
  • C语言研究中心 为您提供有图、有料、解渴的C语言专题! 欢迎讨论!

char *p1,p2;为什么p2不是指针?

C语言研究中心 CTO 8518次浏览 0个评论

char *p1,p2为啥不对?

 

相信不少同学在学完指针后尝试定义两个指针会这样写,并且编译没有错误,使用P1也没有问题,但尝试使用P2的时候可能会发现不对劲!

为什么呢,p2可能仅仅是个char类型的变量,并非是一个指针!

 

 

为何是这样,相信不少这么定义并且觉得正确的同学会有这样的理解,那就是:char *属于类型,p1和p2是变量名,有何不妥呢?然而我们可能因为便于理解,被教理解为:char 和*是一个整体,但事实上并非如此,C语言中这些定义是由两部分组成,那就是基本类型和声明符,基本类型没什么疑问,重点是后面这个声明符,声明符并非是简单的一个变量名!它除了包含标示符,也包含像*、[]、()这些东西!表明这个声明符里的这个变量它是这个类型的指针、或者是数组等等。那么现在回到刚才这个问题,char *p1,p2来看,他们的基本类型都是char类型,标示符是p1,p2,但他们的声明符就不一样了,一个是*p1,一个是p2.所以导致他们的意义不同的原因!

 

明白之后,我们想一句话定义多个指针类型的问题也就解决了!

 

 

学明白的同学记得点赞哦!

 

有不明白的地方随时留言!

C语言网提供「C语言、C++、算法竞赛」在线课程,全部由资深研发工程师或ACM金牌大佬亲授课,更科学、全面的课程体系,以在线视频+在线评测的学习模式学习,学练同步,拒绝理论派,真正学会编程!还有奖学金等增值福利等你!

C语言网, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明char *p1,p2;为什么p2不是指针?
喜欢 (50)
[jinyangH@aliyun.com]
分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)