首页考试吧论坛Exam8视线考试商城网络课程模拟考试考友录实用文档求职招聘论文下载
2014中考
法律硕士
2014高考
MBA考试
2014考研
MPA考试
在职研
中科院
考研培训 自学考试 成人高考
四 六 级
GRE考试
攻硕英语
零起点日语
职称英语
口译笔译
申硕英语
零起点韩语
商务英语
日语等级
GMAT考试
公共英语
职称日语
新概念英语
专四专八
博思考试
零起点英语
托福考试
托业考试
零起点法语
雅思考试
成人英语三级
零起点德语
等级考试
华为认证
水平考试
Java认证
职称计算机 微软认证 思科认证 Oracle认证 Linux认证
公 务 员
导游考试
物 流 师
出版资格
单 证 员
报 关 员
外 销 员
价格鉴证
网络编辑
驾 驶 员
报检员
法律顾问
管理咨询
企业培训
社会工作者
银行从业
教师资格
营养师
保险从业
普 通 话
证券从业
跟 单 员
秘书资格
电子商务
期货考试
国际商务
心理咨询
营 销 师
司法考试
国际货运代理人
人力资源管理师
广告师职业水平
卫生资格 执业医师 执业药师 执业护士
会计从业资格
基金从业资格
统计从业资格
经济师
精算师
统计师
会计职称
法律顾问
ACCA考试
注册会计师
资产评估师
审计师考试
高级会计师
注册税务师
国际内审师
理财规划师
美国注册会计师
一级建造师
安全工程师
设备监理师
公路监理师
公路造价师
二级建造师
招标师考试
物业管理师
电气工程师
建筑师考试
造价工程师
注册测绘师
质量工程师
岩土工程师
造价员考试
注册计量师
环保工程师
化工工程师
咨询工程师
结构工程师
城市规划师
材料员考试
监理工程师
房地产估价
土地估价师
安全评价师
房地产经纪人
投资项目管理师
环境影响评价师
土地登记代理人
缤纷校园 实用文档 英语学习 作文大全 求职招聘 论文下载 访谈|游戏
计算机等级考试
您现在的位置: 考试吧 > 计算机等级考试 > 计算机二级考试 > C加加 > 复习资料 > 正文

2014年计算机二级C++考点归纳:数组、指针与引用

  4.2 指针

  指针(即指针变量)是C+ +语言最大的功能之一。一个指针是一个特定类型数据的存储地址,比如一个变量的地址。

  与其他类型变量一样,指针变量也必须要声明。指针变量声明的一般形式为:

  <数据类型>*<变量名>;

  其中,<数据类型>是指针所指对象的类型,在C+ +中可以指向任何C+ +类型。<变量名>是指针变量名。

  指针使用两种特殊的运算符——*和&。

  一元(单目)运算符&用于返回其操作对象的内存地址,其操作对象通常为一个变量名。例如:

  ptr=&total;

  把变量total的内存地址存到指针变量ptr中。该地址是total变量在计算机内存中的存储地址。

  第二个与指针相关的运算符是*,它与&运算符作用相反。作为一元运算符的*用于返回其操作数所指对象的值,因此,该运算符要求其操作对象为一个指针。

  1指针和地址

  (1)指针说明

  从指针的定义可知,指针是用所指对象类型来表征的。在使用任何指针变量之前必须先给它赋一个所指合法具体对象的地址值。

  如何使一个指针指向一个具体对象:

  ①使用new运算符(或malloc和alloc等函数)给指针分配一个具体空间。

  ②将另一个同类型的指针赋给它以获得值。

  ③通过&运算符指向某个对象。

  (2)指针运算

  尽管指针中存放的是变量的地址,但在C+ +中指针只能进行如下运算。

  ①指针和整型量可以进行加减

  ②若p1,p2为指针,当p1和p2指向同一类型时,可以进行赋值。

  ③两个指向同一类型的指针,可进行= =,>,<等关系运算,其实就是地址的比较。

  ④两个指向同一数组成员的指针可进行相减,结果为两个指针之间相差元素的个数。

  注意:两指针不能相加。

  2指针和数组

  在C+ +中,指针和数组的关系极为密切。实际上,数组的参数传递、数组元素的存取,都可通过指针操作来完成。指针和数组常常可以互换。

  在C+ +中,数组的名字就是指向该数组第一个元素(下标为0)的指针,即该数组第一个元素的地址,也即数组的首地址。

  一般情况下,一个数组元素的下标访问a[i]等价于相应的指针访问*(a+i)。但特别注意:数组名和指针(变量)是有区别的,前者是常量,即数组名是一个常量指针,而后者是指针变量。因此,尽管我们可写pa=a;但不能写:a=pa;或pa=&a;因为我们不能改变常量的值,也不能取常量的地址。

  数组名可作为参数进行传递。当将数组名传给函数时,实际上所传递的是数组的开始地址。(即数组第一个元素的地址)

  为什么要使用指针?简单地说指针运算比数组运算的速度快。

  此外,使用指针的另外一个原因是在大量数据传递时,使用传递指针要远比传递数据本身效率高的多,如在函数参数传递及函数返回值时。当然,使用指针会给程序带来安全隐患(如指针悬挂问题),同时还使得程序的可读性降低(显然,用数组实现的程序要比用指针实现的程序的可读性要好)。

  对于字符串常量,可以把它看成是一个无名字符数组,C+ +编译程序会自动为它分配一个空间来存放这个常量,字符串常量的值本身就是指向这个无名字符数组的第一个字符的指针,其类型是字符指针。

  3指针数组和函数指针

  (1)指针数组

  指针数组就是由指针组成的数组,即数组中的每一个元素都是指向同一类型对象的指针。

  指针数组可以是全局的、静态的和局部的。字符指针数组和二维字符数组在许多方面是一样的,如初始化形式、成员访问方式,因此我们有必要了解它们的区别和各自的使用场合。

  尽管二维字符数组与字符指针数组在存储形式上不同,但它们在初始化形式以及访问元素方式上却是相同的。

  采用指针数组的理由是:它可以节省存贮空间,因而通常用来存放不同长度的字符串。例如,如果要保存从标准输入或文件中读入的行,字符指针数组是一个好的选择。因为读入的行可能长短差异很大。

  (2)命令行参数

  在C+ +中可以实现带有命令行参数的程序,它是通过main带有参数来实现的。

  在C+ +中,主函数main还可以带有参数,形式如下:

  int main(int argc,char * argv[])

  或int main(int argc,char * * argv[])

  其中:

  argc为包含命令本身在内的参数个数。

  argc为指针数组,数组元素为指向各参数(包含命令本身在内)的指针。

  (3)函数指针

  在C+ +中,允许指针指向一个函数,即指向函数的指针。函数指针的说明形式为:

  类型(*标识符)();

  例如:int (* fp)();定义了一个指向返回值为整型值的函数的指针fp。

  注意:int(*fp)();与int*fp();的不同在于,前者是函数指针,后者为返回指向int指针的函数。

  与其他类型的指针变量一样,在使用函数指针前必须使它指向一个具体的函数。若要函数指针指向一个具体函数,可通过赋值语句或参数传递。

  函数指针=函数名;

  该赋值语句将使一个函数指针指向一个具体函数(在C+ +中,函数名是作为指向函数的指针值来处理)。函数指针的最大用途是它可以使得一个函数作为其他函数的参数进行传递,扩展了函数的功能。

上一页  1 2 3 4 5 下一页

编辑推荐:

2014年上半年计算机等级考试报名时间预告

2014年计算机等级考试考试时间预测

2013年9月计算机等级考试成绩查询时间及方式预告

文章责编:wuchong  
看了本文的网友还看了
文章搜索
版权声明:如果计算机等级考试网所转载内容不慎侵犯了您的权益,请与我们联系800@exam8.com,我们将会及时处理。如转载本计算机等级考试网内容,请注明出处。