Q-Kevin的编程随笔(一)

 

 

Q-Kevin的编程随笔(一)

—– C/C++中指针的基本概念

 

Author: Q-Kevin @ http://www.qkevin.com

 

    指针及其使用是C/C++程序中极易出错的内容,在具体的工作中,有太多的错误是由于对指针的使用不当所致,造成这些错误的根本原因在于对指针的理解不透 彻。如果我们透彻的理解了指针,并且在写程序的过程中遵循了一些相应的规范,我们就可以迅速的提高代码的质量。让我们从现在开始在指针的世界中漫游。

 

什么是指针?

    指针就是内存中的一个地址。

    这个地址的概念和我们日常生活中地址的概念是完全一样的。你要通过邮局寄出一封信,一定要在信封上面写出详细的收件人地址,这样这封信才能准确的送达,例 如:北京市朝阳区建国路88号sohu现代城XXX号楼XXX号房间。这个地址帮助我们精确的定位到了一个房间,让我们可以找到我们想要找到的人或者事 物。然而日常生活中的地址种类繁多,命名方法五花八门,相比较而言,计算机中内存地址的表示方法非常的简单,就是一个简单的数字编号,从0一直编号到最大 内存地址(在32位系统中是4G-1)

    这里有一个形象的比喻。我们在学校读书的时候,经常会上体育课,为了统计人数,老师会让我们排好队,从头开始报数,大家就会从一开始报数,一直数到最后一 个人,这最后一个人所报的数字就是所有的人数。比如有八个人排队,那么所报的数字就会是,1,2,3,4,5,6,7,8。总人数是8个人,最后一个报的 数字也是8。我们可以形象的理解成,这每一个人报的数字就是每一个人的地址,如下图所示。

 

    计算机内存地址的概念与我们报数的情况是一摸一样的,区别是内存地址是从0开始,而不是从1开始。每一个字节(byte)有且只有一个对应的编号,此编号 是唯一的,而每一个编号也只对应一个唯一的字节,也即是说,一个编号和一个字节是一一对应的关系。并且编号从0开始,顺序递增,每次都增加1。就好像我们 排队大家所报的数字,每个人报的数字都是不一样的,而且每一个数字对应了这个队列中唯一的一个人,每一个人也只有一个唯一的数字相对应,一个人和一个数字 是一一对应的关系,并且大家所报的数字也是顺序递增的,每次都增加1。内存中每个字节所对应的这个编号就称为内存中的地址,简称地址,地址是连续的,不间 断的,称为线性地址,如图所示。

 

指针,就是这个地址,也就是内存中某一个确定字节在内存中的编号。一个确定的指针,精确的定位了某个字节在内存中的位置。

 

什么是指针变量?

指针变量,就是一个存储指针值的变量。

指针变量也是一个变量,这个变量所存储的内容是一个指针,也就是说,这个变量所存储的内容是一个地址,是内存中某一个字节的编号。每一个变量都需要分配一定的内容空间来保存它的值,在 32 位系统中,一个指针变量需要 4 个字节 (4 bytes) 的内存空间来保存它的值,因为在 32 位系统中,内存的地址空间范围是从 0 4G-1 ,如下图所示,阴影部分的内存空间就是一个指针变量所占据的内存空间,它的值指向编号为 0xA68392F0 的字节。

 

 

=====================================================================================
声明:
《Q-Kevin的编程随笔》系列文章可随意转载,但必须保留本段声明和每一篇文章的原始地址。
作者保留版权,未经作者书面同意,不得用于任何商业用途

《Q-Kevin的编程随笔》系列文章总索引:http://www.qkevin.com/essay
本文原始地址:http://www.qkevin.com/archives/238

前一篇:Preface, http://www.qkevin.com/archives/219
后一篇: 指针指向的是对象, http://www.qkevin.com/archives/249
=====================================================================================

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值