c程序设计谭浩强

c程序设计谭浩强

ID:39963191

大小:702.81 KB

页数:100页

时间:2019-07-16

c程序设计谭浩强_第1页
c程序设计谭浩强_第2页
c程序设计谭浩强_第3页
c程序设计谭浩强_第4页
c程序设计谭浩强_第5页
资源描述:

《c程序设计谭浩强》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第6章指针6.1指针的概念6.2变量与指针6.3数组与指针6.4字符串与指针6.5函数与指针6.6返回指针值的函数6.7指针数组和指向指针的指针6.8有关指针的数据类型和指针运算的小结*6.9引用为了说清楚什么是指针,必须弄清楚数据在内存中是如何存储的,又是如何读取的。如果在程序中定义了一个变量,在编译时就给这个变量分配内存单元。系统根据程序中定义的变量类型,分配一定长度的空间。例如,C++编译系统一般为整型变量分配4个字节,为单精度浮点型变量分配4个字节,为字符型变量分配1个字节。内存区的每一个字节有一个编号,这图6.1就是“地址”。6.1指针的概念图6.1请务必弄清楚一

2、个内存单元的地址与内存单元的内容这两个概念的区别。在程序中一般是通过变量名来对内存单元进行存取操作的。其实程序经过编译以后已经将变量名转换为变量的地址,对变量值的存取都是通过地址进行的。这种按变量地址存取变量值的方式称为直接存取方式,或直接访问方式。还可以采用另一种称为间接存取(间接访问)的方式。可以在程序中定义这样一种特殊的变量,它是专门用来存放地址的。图6.2是直接访问和间接访问的示意图。为了将数值3送到变量中,可以有两种方法:(1)直接将数3送到整型变量i所标识的单元中。见图6.2(a)。(2)将3送到指针变量i_pointer所指向的单元(这就是变量i所标识的单元)

3、中。见图6.2(b)。图6.2所谓指向,就是通过地址来体现的。由于通过地址能找到所需的变量单元,因此可以说,地址指向该变量单元。因此将地址形象化地称为“指针”。一个变量的地址称为该变量的指针。如果有一个变量是专门用来存放另一变量地址(即指针)的,则它称为指针变量。指针变量的值(即指针变量中存放的值)是地址(即指针)。指针变量是一种特殊的变量,它和以前学过的其他类型的变量的不同之处是:用它来指向另一个变量。为了表示指针变量和它所指向的变量之间的联系,在C++中用“*”符号表示指向,例如,i_pointer是一个指针变量,而*i_pointer表示i_pointer所指向的变量

4、,见图6.3。下面两个语句作用相同:①i=3;②*i_pointer=3;图6.36.2变量与指针C++规定所有变量在使用前必须先定义,即指定其类型。在编译时按变量类型分配存储空间。对指针变量必须将它定义为指针类型。先看一个具体例子:inti,j;//定义整型变量i,jint*pointer_1,*pointer_2;//定义指针变量*pointer_1,*pointer_2第2行开头的int是指:所定义的指针变量是指向整型数据的指针变量。也就是说,指针变量pointer_1和pointer_2只能用来指向整型数据(例如i和j),而不能指向浮点型变量a和b。这个int就是指

5、针变量的基类型。指针变量的基类型用来指定该指针变量可以指向的变量的类型。定义指针变量的一般形式为6.2.1定义指针变量基类型*指针变量名;下面都是合法的定义:float*pointer_3;//pointer_3是指向单精度型数据的指针变量char*pointer_4;//pointer_4是指向字符型数据的指针变量请注意:指针变量名是pointer_3和pointer_4,而不是*pointer_3和*pointer_4,即“*”不是指针变量名的一部分,在定义变量时在变量名前加一个“*”表示该变量是指针变量。那么,怎样使一个指针变量指向另一个变量呢?只需要把被指向的变量的

6、地址赋给指针变量即可。例如:pointer_1=&i;//将变量i的地址存放到指针变量pointer_1中pointer_2=&j;//将变量j的地址存放到指针变量pointer_2中这样,pointer_1就指向了变量i,pointer_2就指向了变量j。见图6.4。图6.4一般的C++编译系统为每一个指针变量分配4个字节的存储单元,用来存放变量的地址。在定义指针变量时要注意:(1)不能用一个整数给一个指针变量赋初值。(2)在定义指针变量时必须指定基类型。有两个与指针变量有关的运算符:(1)&取地址运算符。(2)*指针运算符(或称间接访问运算符)。例如:&a为变量a的地址

7、,*p为指针变量p所指向的存储单元。6.2.2引用指针变量例6.1通过指针变量访问整型变量。#includeusingnamespacestd;intmain(){inta,b;//定义整型变量a,bint*pointer_1,*pointer_2;//定义指针变量*pointer_1,*pointer_2a=100;b=10;//对a,b赋值pointer_1=&a;//把变量a的地址赋给pointer_1pointer_2=&b;//把变量a的地址赋给pointer_2cout<

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

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

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