数组与指针概念剖析

数组与指针概念剖析

ID:42446557

大小:41.00 KB

页数:6页

时间:2019-09-15

数组与指针概念剖析_第1页
数组与指针概念剖析_第2页
数组与指针概念剖析_第3页
数组与指针概念剖析_第4页
数组与指针概念剖析_第5页
资源描述:

《数组与指针概念剖析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、数组与指针概念剖析数组与指针概念剖析数组与指针生來就是双胞胎,多数人就是从数组的学习开始指针的旅程的。在学习的过程中,很自然就会经常听到或见到关于数组与指针的各种各样的看法,下面我节选一些在各种论坛和文章里经常见到的文字:“一维数组是一级指针”“二维数组是二级指针”“数组名是一个常量指针”“数组名是一个指针常量”这些文字看起来非常熟悉吧?类似的文字还有许多。不过非估遗憾,这些文字都是错误的,实际上数组名永远都不是指针!这个结论也许会让你震惊,但它的确是事实。但是,在论述这个问题之前,首先需耍解决两个问题:什么是指针?什么是数组?这是本章的主要内容,数组名是否指针这个问题留在第二章进行

2、讨论。看到这里,也许有人心里就会嘀咕了,这么简单的问题还需要说吗?int*p,a[10];不就是指针和数组吗?但是,笔者在过往的讨论过程中,还真的发现有不少人对这两个概念远非清晰,这会妨碍对后而内容的理解,所以还是有必要先讨论一下。什么是指针?一种普遍存在的理解是,把指针变量理解成就是指针,这种理解是片而的,指针变量只是指针的具屮一种形态,但指针并不仅仅只有指针变量。一个指针,包含了两方面的涵义:实体(entity)和类型。标准是这样描述指针类型的:6.2.5TypesApointertypemaybederivedfromafunctiontype,anobjecttype,ora

3、nincompletetype,calledtherefereneedtype.Apointertypedescribesanobjectwhosevalueprovidesareferencetoanentityofthereferencedtype.ApointertypederivedfromthereferencedtypeTissometimescalled”,,pointertoT".Theconstructionofapointertypefromareferencedtypeiscalled”,,pointertypederivation请留意第二句所说的内容:指针类

4、型描述了这样一个对象,其值为对某种类型实体的引用。标准在这里所用的措词是指针类型描述了一个对象。再來看看标准关于取址运算符&的规定:6.5-3.2AddressandindirectionoperatorsSemanticsTheunary&operatorreturnstheaddressofitsoperand.Iftheoperandhastype“type”,theresuIthastype“pointertotype”Otherwise,theresultisapointertotheobjectorfunctiondesignatedbyitsoperand・这个条款规定

5、,&运算符的结杲是一个指针。但问题是,&农达式的结杲不是对象!标准自相矛盾了吗?当然不是,这说明的是,指针的实体有对象与非对象两种形态。我们常说的指针变量只是指针实体的对象形态,但对象与非对象两种形态合起來,才是指针的完整涵义,就是说,无论是否对象,只要是一个具有指针类型的实体,都可以称Z为指针,换言之,指针不一定是对象,也不一定是变量。后一-种情况,指的是当需要产生一个指针类型的临时对象时,例如函数的传值返回或者表达式计算产生的中间结果,曲于是一个无名临时对象,因此不是变量。在C++中,由于引入了OOP,增加了一种也称为“指针”的实体:类非静态成员指针,虽然也叫指针,但它却不是-•

6、般意义上的指针。C++标准是这样说的:3.9.2CompoundtypesExceptforpointerstostaticmembers,textreferringto"pointers"doesnotapplytopointerstomembers接下来,该谈谈数组了。数组是一种对象,其对象类型就叫数组类型。但笔者发现有个现象很奇怪,有些人根木没方数组类型的意识,不过也的确有些书并没有将数组作为一个类型去阐述,也许原因就在于此吧。数组类型跟指针类型都属于派生类型,标准的条款:6.2.5TypesAnarraytypedescribesacontiguouslyallocatedn

7、oncmptysetofobjectswithaparticularmemberobjecttype,calledthodemonttypo.Arraytyposarecharacterizedbytheirelementtypeandbythenumberofelementsinthearray.Anarraytypeissaidtobederivedfromitselementtype,andifitselementtypeisT,thearrayty

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。