第一章_数组与指针概念剖析

第一章_数组与指针概念剖析

ID:42910837

大小:46.00 KB

页数:13页

时间:2019-09-23

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

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

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

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

3、ecttype,oranincompletetype,calledthereferencedtype・Apointertypedescribesanobjectwhosevalueprovidesareferencetoanentityofthereferencedtype.ApointertypederivedfromthereferencedtypeTissometimescalled"pointertoT".Theconstructionofapointertypefromareferencedtypeiscalled"pointertypederivat

4、ion^・请留意第二句所说的内容:指针类型描述了这样一个对象,其值为对某种类型实体的引用。标准在这里所用的措词是指针类型描述了一个对象。再来看看标准关于取址运算符&的规定:6.53.2AddressandindirectionoperatorsSemanticsTheunary&operatorreturnstheaddressofitsoperand・Iftheoperandhastype"type:theresulthastype"pointertotype”Otherwise,theresultisapointertotheobjectorfunction

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

6、增加了一种也称为“指针”的实体:类非静态成员指针,虽然也叫指针,但它却不是一般意义上的指针。C++标准是这样说的:3.9.2CompoundtypesExceptforpointerstostaticmembers,textreferringto''卩0血环"doesnotapplytopointerstomembers接下来,该谈谈数组了。数组是一种对象,其对象类型就叫数组类型。但笔者发现有个现象很奇怪,有些人根本没有数组类型的意识,不过也的确有些书并没有将数组作为一个类型去阐述,也许原因就在于此吧。数组类型跟指针类型都属于派生类型,标准的条款:625Type

7、sAnarraytypedescribesacontiguouslyallocatednonemptysetofobjectswithaparticularmemberobjecttype,calledtheelementtype・Arraytypesarecharacterizedbytheirelementtypeandbythenumberofelementsinthearray.Anarraytypeissaidtobederivedfromitselementtype,and讦itselementtypeisT,thearraytypeissometi

8、mescalled6'a

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

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

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