首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

指针介绍-跟着Richard Reese,做C指针旅行

我好像很懒,公众号申请了这么久都没有发一篇出来。实在是自己的事业处于关键期,没空。问题是,我集中精力去做,好像也没有突破,估计是喝不上汤了,还写点是点,闲话少说,开始正题。写指针主要是因为它重要,写在这里的东西,主要参考,Richard Reese写的,这本书是我的最爱。

Richard Reese在前言中提到,编程涉及通常在内存中数据的操作,对C管理内存的理解越到位,便会有着深入的视角,进而转化为更强的编程能力。

pointer应该是c的灵魂了,个人觉得。它就是一根针,指向内存区域的一只强有力的手。负责定位数据,操作数据。指针是一个很大的题,遍及整个语言,从而有着更大的弹性,弄懂它,C也就学到了精髓。不过它也危险,不够智能,动不动就是忘记free,或者成为野指针,找到不了,丢了内存地址,造成内存泄漏。也会造成运行错误,比如double free,或者free了,但是没有把指针归NULL。它可以用到很多地方,比如动态内存管理,指针和函数,指针和数组,指针和字符串,指针和结构等。

对指针有着透彻的了解以及高效使用的能力,是区分菜鸟和有经验程序员的一个标准。那么指针的定义是什么,其实很简单,就是一个变量,存了内存地址的变量。但是学起来又不是简单的。首先要明白内存是怎么组织的,然后明白指针是怎么操作内存的(或者说访问里面的数据)。

当一个C程序被编译的时候,编译工作在三种类型的内存上进行。

static/global

静态和全局变量用这块内存,不会消失直到程序终止了。

注意,全局变量,所有的函数都可以访问,但是静态变量只能在它们定义的函数里访问。

automatic

自动分配,活在函数里,函数用完了,它们也完了。

dynamic

动态分配,在heap里,用完了,自己记得释放。指针用的多。一定要记得释放。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180505G1IT7W00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券