专栏首页程序员互动联盟怎样熟练掌握C语言的指针?

怎样熟练掌握C语言的指针?

从事C语言开发已经超过10个年头,越来越觉得指针的方便之处,但在初学者来看指针就是拿下这门编程最大的拦路虎,毕竟很多人开始学习C语言都是激情四射结果遇上了指针猫变成了老鼠变得畏首畏尾。对于指针的不理解主要还是意识上缺乏计算机思维,思维的锻炼不是靠一两天的勤奋能够到位的,需要长时间的坚持。

要理解指针还是需要掌握一些基础,计算机组成原理,了解计算机内部结构以及内存管理,明白进制之间如何转化,然后再去看如何使用指针,指针本质就是一个变量的地址,指针使用起来有很多规则,而且一般人都经常容易忘记,有个编程高手同事,编程的基本功特别扎实,问他怎么练成的他说刚入行的时候遇到一个特别负责的技术主管,主要下属犯一些技术错误直接在办公室通报批评,每次操作字符串或者指针出现问题就通报,在指针的初始化方面特别容易出问题,所以现在这种错误几乎不会再出,这也是普通初学者经常出的一些问题,指针还没初始化拿去用直接就导致系统崩溃了,来回折腾几次就开始怕了指针了,所以很多人开始学习指针不见得就是怕指针,就是弄了几次错误之后就觉得这玩意不好惹。

可能觉得指针的初始化很简单的事情,但在实际操作过程中几乎每个人都会遇到,特别是结构体指针如果结构体里面再有指针,数组,结构体等等复杂的数据结构,这样在函数操作过程中什么时候什么时候释放指针,如何进行指针之间赋值等等操作就能看到功底了,所以初学者开始做项目经常写出导致系统崩溃或者内存泄漏的代码,这些经验都需要慢慢来总结,当然最重要的时候不能被吓到坚持下去。

学习指针推荐一本林锐博士写的《高质量C/C++编程》对于指针的常见的漏洞有一些非常透彻的讲述,想快速掌握指针的使用技巧还是要以实际项目为基础,记得曾经做一个机顶盒项目遇到一个问题在耐久测试过程中,只要是运行超过48小时很快就死机,从经验上判断是内存泄漏但要找到那个内存申请导致,最后用了钩子函数不停的折腾,找到了动态申请内存的一行代码,不停的在申请但一直没有释放,做了释放的动作了,但指针的释放方向不同,因为这个事情项目晚了三天发布,由于经历过这些过程所以在写代码的时候就会让自己小心。

如何熟练掌握指针?

1.首先要正确认识指针,不能因为指针给自己带给来过麻烦就不敢去使用了,去年写了一个项目,由于下边的技术人员大部分都是刚入行的,所以在设计框架的时候刻意减少了指针的使用,大部分使用的数组来代替,在项目结束的时候,专门布置了个任务,把里面的数组全部换成指针来操作,结果大家苦不堪言,真正的意识到指针不是那么好玩,但大家都坚持下去,经过一段时间大家基本上都掌握的差不多了,所以从心里上就要做到越挫越勇。

2.多注意总结平时遇到的一些错误,特别是指针使用的场景,不同的场景表现形式不一样,要把内存管理机制搞清楚,只有弄清本质才能更好的掌握,特别是多级指针的使用过程中如何保证脑子不乱,就要多去总结,归纳的时候要懂得变通,用代码去实现。

3.最快的方式还是要多做项目,项目是检验能力的唯一试金石,做的次数多了,积累的经验也就多了,当然在实践过程中还要回过头来看看基础。

要有坚持到底的勇气,更要有坚实的基础。

本文分享自微信公众号 - 程序员互动联盟(coder_online)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【编程基础】C语言指针函数和函数指针

    往往,我们一提到指针函数和函数指针的时候,就有很多人弄不懂。下面详细为大家介绍C语言中指针函数和函数指针。 一、指针函数 当一个函数声明其返回值为一个指针时,实...

    程序员互动联盟
  • C语言最难啃的三块硬骨头

    提到C语言很多初学者都觉得,学到中间就进行不下去了,因为碰到了几个硬骨头死活翻不过去,于是很多人给C语言下结论太难了,太靠近底层了,特别是那几块难啃的骨头,直接...

    程序员互动联盟
  • 【编程基础】C语言指针的初始化和赋值

    1、指针的初始化 指针初始化时,“=”的右操作数必须为内存中数据的地址,不可以是变量,也不可以直接用整型地址值(但是int*p=0;除外,该语句表示指针为空)。...

    程序员互动联盟
  • C语言指针5分钟教程

    指针、引用和取值 什么是指针?什么是内存地址?什么叫做指针的取值?指针是一个存储计算机内存地址的变量。在这份教程里“引用”表示计算机内存地址。从指针指向的内 存...

    猿人谷
  • 空指针 到底是什么意思?

    各位,前段时间我们有推文介绍过野指针和悬空指针,那C中还有一个叫做空指针的名词,它究竟是指什么呢,今天就跟大伙聊聊这个空指针。

    7089bAt@PowerLi
  • 视频流媒体平台编译中如何运用Go语言指针?

    本文讲的也是我们在编译流媒体平台EasyNVR的时候,碰到的go语言指针问题,就打算为大家介绍一下Go语言指针的运用。

    EasyNVR
  • Golang语言--指针

    在Go中指针是很容易学习的。一些进入编程任务,指针更容易操作,如通过引用调用,需要要使用指针来执行。所以学习指针成为完美Go程序员很有必要。让我们开始学习指针的...

    李海彬
  • 142. Linked List Cycle II

    首先要证明链表有环: 用快慢两个指针解决。快指针每次走两步,慢指针每次走一步。如果有环,则一定会最终在环内某点相遇。下面证明这一点:

    平凡的学生族
  • 基础知识 | 每日一练(59)

    士人有百折不回之真心,才有万变不穷之妙用。立业建功,事事要从实地着脚,若少慕声闻,便成伪果;讲道修德,念念要从虚处立基,若稍计功效,便落尘情。 ...

    C语言入门到精通
  • 【编程基础】C语言指针函数和函数指针

    往往,我们一提到指针函数和函数指针的时候,就有很多人弄不懂。下面详细为大家介绍C语言中指针函数和函数指针。 一、指针函数 当一个函数声明其返回值为一个指针时,实...

    程序员互动联盟

扫码关注云+社区

领取腾讯云代金券