欢迎来到天天文库
浏览记录
ID:50320747
大小:94.50 KB
页数:24页
时间:2020-03-08
《C语言程序设计教程 教学课件 作者 宗大华 陈吉人 第5章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章指针本章着重讲述4个方面的内容:(1)建立地址就是指针的概念。(2)指针变量的说明和初始化。(3)指针变量的使用。(4)指针数组的含义及使用。5.1 指针和指针变量5.1.1 直接访问和间接访问所谓一个“变量的地址”,就是指其占用存储区中由小到大的第1个字节地址。由这些可以看出下面的两点。(1)地址起到了一个指向作用。(2)在C语言中说一个变量的地址,其实还隐含有这个变量的类型信息在内,不能笼统地只把它视为一个地址。由于一个变量的地址(指针)也是一个值(只不过它是一个地址值,而不是普通意义的数值),因此就可以把这个地址值存放到另一
2、个变量里保存。这种专门用来存放变量地址的变量,称为“指针变量”。由于一个变量的地址(指针)还隐含有这个变量的类型信息在内,所以不能随意把一个地址存放到任何一个指针变量中去,只能把具有相同类型的变量的地址,存放到这个指针变量里去。可见,指针变量也应该有自己的类型,这个类型与存放在它里面的地址所隐含的类型应该相同。从变量名,找到这个变量对应的地址,从这个地址直接完成对存储单元进行访问的方法,称为对内存的“直接访问”。通过一个地址得到另一个地址,再由得到的这个地址访问所需的存储单元。这种由变量的地址得到另一个变量的地址,再通过得到的这个地址,
3、完成对存储单元访问的方法,称为对内存的“间接访问”。5.1.2指针变量的说明和初始化C语言把内存单元的地址视为一种数据类型,即指针型数据。存放指针型数据的变量,称为指针型变量,简称指针变量。说明一个变量是指针变量的一般格式是:<存储类型><数据类型>*<变量名>;要注意以下3点。(1)“*”只起到一个标识的作用,它不是所说明的指针变量名本身的一个组成部分。(2)说明中的<数据类型>,是指说明的指针变量里面所能存放的变量地址的类型。(3)相同类型的指针变量可以在一个说明语句里出现,但每一个变量名的前面都要冠有指针变量的标识“*”。5.1.
4、3取地址运算符与指针运算符1.取地址运算符:&“&”是一个单目运算符,使用时的一般格式是:&<变量名>该运算符的运算对象只能是由<变量名>所指定的变量,运算结果是得到该变量的存储地址。2.指针运算符:*“*”是一个单目运算符,其使用的一般格式是:*<指针变量名>该运算符的运算对象只能是由<指针变量名>所指定的指针变量或一个地址,运算结果是访问该指针变量(或地址)所指的变量。5.2 指针与数组可以用一个指针变量指向数组,也可以用一个指针变量指向数组的某一个元素。前者称为“指向数组的指针变量”,简称“指向数组的指针”;后者称为“指向数组元素
5、的指针变量”,简称“指向数组元素的指针”。5.2.1指向一维数组的指针变量为了让一个指针指向一维数组,只要将这个一维数组的名字或这个一维数组第一个元素的地址赋给这个指针即可。1.用指向数组的指针来引用数组的元素这时可以通过“++”运算符来移动指针,得到数组所有元素的地址,从而就可以访问到数组的所有元素。在指针p上进行++运算,并不是单纯加1,而是加上它所指变量数据类型的长度单位。在将一个指针指向一维数组首地址后,C语言提供了下面4种直接访问该数组第i个元素的方法:<数组名>[i]<指针变量名>[i]*(<数组名>+i)*(<指针变量名>
6、+i)前面两种方法使用了数组元素的下标,所以称为“下标法”,后面两种方法使用了指针运算符,所以称为“指针法”。数组名是一个地址常量,指向数组的指针是一个变量,因此不能把它们完全等同地加以使用,它们之间的区别有以下3点。(1)数组名代表的是一个地址常数,指针是一个变量。(2)数组名不能修改,指针可以改变指向。(3)在数组名上只能进行加法,以计算出某个数组元素的地址,但不能对数组名进行增1、减1运算;而指针不仅可以进行加、减法,以计算出某个数组元素的地址,而且可以进行增1、减1运算,达到修改指针指向的目的。2.用指向数组元素的指针来引用数组
7、的元素在把数组第i个元素的地址赋给指针变量后,这个指针就指向了该数组的第i个元素了。这时可以通过++和--运算符来向前、向后一步步地移动指针,得到数组所有元素的地址,从而访问到数组的所有元素;也可以通过减k或加k的办法(k是一个正整数),得到以第i个元素为基准的前第k个元素的地址,或得到以第i个元素为基准的后第k个元素的地址,从而访问到所要访问的数组元素。5.2.2指向字符串的指针变量C语言还提供了基于指针变量来实现字符串的方法。由于指针变量是一个变量,它能够接受赋值。当把一个地址赋给它时,指针的指向也就随之改变。因此,利用字符型指针变
8、量来处理字符串,在程序中使用起来会感到便利和简捷。让一个字符指针变量指向字符串常量的方法有两种。(1)在指针变量初始化时。格式是:char*<指针变量名>=<字符串常量>;(2)在程序中,直接将字符串常量赋
此文档下载收益归作者所有