C语言/C++学习之C语言的指针学习的4个难点
小职 2021-01-07 来源 : 阅读 763 评论 0

摘要:本文主要向大家介绍了C语言/C++学习之C语言的指针学习的4个难点,通过具体的内容向大家展现,希望对大家C语言/C++的学习有所帮助。

本文主要向大家介绍了C语言/C++学习之C语言的指针学习的4个难点,通过具体的内容向大家展现,希望对大家C语言/C++的学习有所帮助。

C语言/C++学习之C语言的指针学习的4个难点

都说指针是C语言的灵魂,是重点也是难点,C语言的指针学习难在哪里?即使了解了C语音指针是什么,可能你们会依然感到难学,那么它究竟难学在哪里呢?以下试着从4个方面聊聊它难学在哪里,可能不够完善,如有补充请留言。



难点1. 讨厌的星号

定义指针变量p时,都会加个*号。在用到指针变量p时,也会加个*号。比如以下代码:

  int main()

  {

  int *p;

  p = malloc(sizeof(int));

  *p = 1;

  return 0;

  }


程序定义了一个指针变量p,前面有个*号;后面给指针p指向的内存区域赋值1,又有个*号,这两个*号有啥区别呢?很多初学者在这里会搞不懂。


定义指针p时,前面的*号只是告诉编译器,p是个指针,其它没什么用处。我个人一直认为,当初发明C语言时,定义指针p时不应该用*来说明,你可以用@号,用#号,用$号,随便用什么号来说明p是个指针,这样就不会与下面用到指针p时的*混淆了。


*p = 1这个语句的*号,起到的作用就是跨过指针p自己的值,直捣黄龙,取得指针p指向的存储区域。关于指针p自己的值,和指针p指向的值,可以参考我之前的文章。


所以*号出现在不同的位置,有不同的作用,这是刚开始学指针时难学的一个地方。



 难点2. 分不清址与值

这里的址就是地址,就是很多教材喜欢说的指针变量是个地址,但是谁看得懂什么地址!而值,就是指针p指向的数据。


还借用上面的代码,跟指针p相关的数据就两个,一个是指针p自己的值,程序中是明显看不到的,是程序运行时操作系统才能看到的,指针p自己的值就是教材中提到很多次的“地址”;另一个就是指针p指向的值,程序中就是常量“1”。


很多地方只会讲地址,但是根本就没有讲清这个“址”与“值”这两者的区别,所以谁搞得懂。



难点3. 借助址来读值

指针有自己的值的概念,有指向的值的概念,两者的关系也是让初学者迷糊的。指针要借助自己的值,去找到指向的值,也就是借助址来读取值。


就像上面的代码片段,假设指针p自己的值是0x12345678,这就是一个内存区域的地址,借助这个址,再结合星号,就可以将整数1放在0x12345678这块内存中了。此时,指针p借助自己的值(0x12345678)指向了一个值(1)。


借址读(写)值,已经让人晕了。



难点4. 链表结点

如果上述3点还不算变态的话,那么结合链表这种数据结构,那就相当的变态了。

比如链表的结点往往定义为一个结构体,就像这样:

  struct node

  {

  int i;

  struct node *next;

  }


然后会有什么建立链表啊,插入链表啊,删除链表啊,哪一个操作不会用到指针next?

  

本来链表操作就让人烦了,再加上指针这个东东,真是烦上加烦。

  

可不是嘛,比如定义了一个结点变量指针p,如下

  struct node *p;

  

然后你就会看到满程序都有p->next,说不定还有其它的结点变量指针q,再来个p->next = q->next,或者q->next = p->next,让人眼花缭乱,能不烦吗。


其实不仅仅只是这样4个难点,难点虽难,如不攻破,将在后面的学习中难上加难,职坐标C语言/C++专属课程,专业导师带你解决技能与就业难题。



关注“职坐标在线”(Zhizuobiao_Online)公众号,免费获取学习视频资料、技术就业咨询

C语言/C++学习之C语言的指针学习的4个难点

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程