c语言程序设计2第11章指针

c语言程序设计2第11章指针

ID:36324533

大小:287.31 KB

页数:25页

时间:2019-05-09

c语言程序设计2第11章指针_第1页
c语言程序设计2第11章指针_第2页
c语言程序设计2第11章指针_第3页
c语言程序设计2第11章指针_第4页
c语言程序设计2第11章指针_第5页
资源描述:

《c语言程序设计2第11章指针》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第11章指针C语言的特色之一、也是其精华所在就是指针。使用指针可以实现以下用其它方法不易实现的操作:对内存中的数据进行处理,而不管这些数据的类型;在函数之间快速地传递数据;直接处理内存地址。这种方法增强了C语言的处理能力、提高了程序的执行效率,尤其是适合系统软件的开发,也极大地增强了程序的灵活性。指针不仅不易理解,而且使用不当会带来严重的错误。可以说,是否掌握指针,是业余爱好者与专业程序员的分水岭。学好指针,关键是理解其概念与操作原理。退出11.1指针的基本概念11.2指针变量的运算11.3数组指针变量的说明和使用11.4字符串指针变量的说明和使用11

2、.5函数指针变量11.6指针型函数11.1指针的基本概念11.1.1了解指针在计算机中,所有的数据都是存放在存储器中的。为了正确地访问这些内存单元,必须为每个内存单元编上号。根据一个内存单元的编号即可准确地找到该内存单元。内存单元的编号也叫做地址。通常也把这个地址称为指针。对于一个内存单元来说,单元的地址即为指针,其中存放的数据才是该单元的内容。通常用一个变量来存放指针,这种变量称为指针变量。因此,一个指针变量的值就是某个内存单元的地址或称为某内存单元的指针。11.1.2指针变量的类型说明对指针变量的类型说明包括三个内容:指针类型说明,即定义变量为一个

3、指针变量;指针变量名;变量值(指针)所指向的变量的数据类型;其一般形式为:类型说明符*变量名;其中,*表示这是一个指针变量,变量名即为定义的指针变量名,类型说明符表示本指针变量所指向的变量的数据类型。例如:int*p;表示p是一个指针变量,它的值是某个整型变量的地址。或者说p指向一个整型变量。至于p究竟指向哪一个整型变量,应由向p赋予的地址来决定。再如:staticint*p;/*p是指向静态整型变量的指针变量*/float*p;/*p是指向浮点变量的指针变量*/char*p;/*p是指向字符变量的指针变量*/指针变量本身一定是整数(就像房间号一样),

4、类型差别只是所指地址中存放的数据的差别。指针应具有“始终如一”的特点,也就是说,一个指针变量只能指向同类型的变量,不能时而指向一个浮点变量,时而又指向一个字符变量。这就好比商品的标签一样,贴计算机的标签不能贴在化妆品。11.1.3指针变量的赋值指针变量也是变量,所以与普通变量同样,必须在使用前赋值。未经赋值的指针变量不能使用。当然,指针变量的赋值只能赋予地址,而不能赋予其它数据。因为变量的地址是由编译系统分配的,所以用户不知道变量的具体地址。因此,通过与变量之间的关系来确定它的值。引入地址运算&来表示变量的地址。其一般形式为:&变量名;如&a变示变量a

5、的地址,&b表示变量b的地址。变量本身必须预先说明。设有指向整型变量的指针变量p,如要把整型变量a的地址赋予p可以有以下两种方式:(1)指针变量初始化的方法inta;int*p=&a;(2)赋值语句的方法inta;int*p;p=&a;/*不能写为*p=&a*/不允许直接把一个数赋予指针变量,作为变量的值。下面的赋值是错误的:int*p;p=23;在赋值语句中,被赋值的指针变量前不能再加“*”说明符,如写为*p=&a也是错误的。11.2指针变量的运算指针变量可以进行某些运算,但其运算的种类是有限的。它只能进行地址、赋值及很少一些算术运算和关系运算。11

6、.2.1指针运算符1取地址运算符&其功能是取变量的地址。&是单目运算符,其结合性为自右至左。在前面的许多例子中,我们已经使用了&运算符。如&a,&b。2取内容运算符*用于表示指针所指的变量。*是单目运算符,其结合性为自右至左。如*p1,*p2。在*运算符之后跟的变量必须是指针变量。注意,指针运算符*和指针变量说明中的指针说明符*的意义并不相同。在指针变量说明中,“*”是类型说明符,表示其后的变量是指针类型。而表达式中出现的“*”则是一个运算符用以表示指针变量所指变量的内容。【例11-1】(见课本)11.2.2指针变量的运算1赋值运算指针变量的赋值运算有

7、以下几种形式。(1)指针变量初始化赋值参见上页。(2)传递地址把一个变量的地址赋予指向相同数据类型的指针变量。例如:inta,*pa;pa=&a;/*把整型变量a的地址赋予整型指针变量pa*/(3)传递指针把一个指针变量的值赋予指向相同类型变量的另一个指针变量。如:inta,*pa=&a,*pb;pb=pa;/*把a的地址赋予指针变量pb*/由于pa,pb均为指向整型变量的指针变量,因此可以相互赋值。(4)取数组地址把数组的首地址赋予指向数组的指针变量。例如:inta[6],*pa;pa=a;(数组名表示数组的首地址,故可赋予指向数组的指针变量pa)也

8、可写为:pa=&a[0];/*数组第一个元素的地址也是整个数组的首地址,也可赋予pa*/当然也

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

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

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