欢迎来到天天文库
浏览记录
ID:50043838
大小:129.50 KB
页数:42页
时间:2020-03-08
《C语言程序设计 第二版 教学课件 作者 钟廷志 李如超 第8章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第8章指针概述8.1指针的定义8.2指针作函数的参数8.3指针作函数的参数8.4本章主要讲述C语言中的又一重要概念——指针。指针是C语言中的重要概念,也是C语言的重要特色。计算机在执行程序时,60%~70%的时间都是用于寻找地址,因此,引入指针变量可以直接对内存中的不同数据进行快速处理。使用指针为函数间的各类数据(特别是复杂数据类型的数据)在函数之间的传递提供了简洁便利的方法,可以使程序更加简洁、紧凑、高效。因此,只有正确、灵活地使用指针,才能够编写出简洁明快、功能强大、质量高的程序。【学习目标】·掌握指针的概念、定义·掌握指针变量的使用·掌握指针在函数中的运用·掌握指针的运算·掌握指针
2、在数组中的运用8.1概述计算机最基本的功能之一就是具有记忆功能,计算机记忆数据的基本方法是将其转换为二进制后存放在存储器中。存储器由数量巨大的一个个存储单元组成,为了便于管理,必须给每个单元编号,该编号通常由十六进制数表示,称为地址码,或简称地址。它类似于一座宾馆内每个房间的门牌号。C程序中的变量都存储在具有确定地址的存储单元中。指针的本质就是地址,指针变量是一种专门用来在存储器中存储地址的特殊变量。在第6章函数中,已提到访问某个数据其实质是先找到存放这个数据的存储单元(地址),然后再找到这个地址中所存储的数据。有了指针这一概念后,就可以先使指针变量指向某个变量的地址,然后通过对指针的操
3、作实现对这个变量的操作。这种操作尤其是针对数组、结构体等复杂数据类型时非常简便。引入指针后:·可以使程序实现简洁化、紧凑化和高效化;·为函数之间提供简洁而便利的参数传递方法;·可以实现动态分配存储空间;·可以使程序员浏览整个内存空间从而能够改变内存中的数据。任何事物都具有两面性,指针的优点虽然很多,但对指针的操作又是一项颇具“危险性”的工作。不正确地使用指针可能将数据错误地写到别的存储单元,覆盖不应该覆盖的值,造成严重的数据损失,甚至可能使整个软件系统不能正常工作。由此可见,在使用指针时,必须深刻领会其设计要领。8.2指针的定义指针总是和地址分不开的,从某种角度来说,指针就是地址。因此在
4、介绍指针概念之前,首先讲述地址的概念。1.地址的概念计算机中的地址与现实生活中的地址非常相似,如图8-1所示。例如,在一幢学生宿舍里,每1个房间都有1个编号,以便于别人访问该房间里居住的同学;在计算机的内存中,每1个存储单元(1个字节的存储空间)同样也有1个编号,以便于计算机访问该内存单元中的数据,这个编号就是存储单元的地址。在内存单元中存储的数据就像房间里居住的学生,通过房间门牌号码可以找到该房间居住的学生,同样,通过内存单元的地址可以实现对存储在该单元中数据的读写操作。2.指针的定义(1)指针的定义格式既然指针变量是一种特殊的变量,因此在使用之前也必须先定义。指针的定义格式如下:指针
5、类型*指针变量名;对指针定义做以下说明。·指针类型是指指针所指向变量中存放数据的类型。·指针变量名是指针的名字,它遵循标识符的命名规则。·“*”符号可以靠近定义中任何1个部分,甚至也可以独立地放在中间,在这里“*”主要起一个标识作用,用于说明定义的变量为指针变量。(2)应用举例定义1个指向整型变量的指针变量p:int*p;定义1个指向实型变量的指针变量q:float*q;定义1个指向字符型变量的指针变量point:char*point;此外,还可以同时定义多个相同类型的指针,例如:int*p,*q;3.指针变量的操作在对指针的实际运用中,经常会用到以下操作:·对指针变量赋地址,即指针的初
6、始化;·利用指针可以间接访问变量。由于指针是一种存放变量地址的特殊变量,因而为指针初始化的方法就是将1个变量的地址赋给1个指针变量。(1)取地址运算符“&”。在C程序设计中,1个变量在内存中存放时具有确定的地址,但是对于程序设计者来说,具体地址是多少并不重要。使用取地址运算符“&”可以获得1个变量在内存中的地址。例如,设有一个整型变量a,则“&a”可以获得变量a的地址。(2)将变量地址赋给指针。程序中的语句组“p=&a;q=&b;”的功能是把整型变量a,b的地址赋给指针变量p,q,这就是对指针变量的赋值操作。(3)取内容运算符“*”。在指针的前面添加“*”运算符可以获得该指针所指向变量的
7、值,因此将“*”运算符称为取内容运算符。当将一个指针指向一个变量后,使用“*”可以实现对变量的间接访问。例如:inta,b,*p;/*定义变量和指针*/a=10;/*变量的初始化*/p=&a;/*指针的定向*/b=*p;/*将指针所指向变量的值赋给变量b*/在语句“b=*p;”中,使用取内容运算符“*”获得指针p所指向的变量的值,也就是变量a的值,因此该语句与“b=a”等效。由于使用指针作为数据访问的中介,因此,将使用指针对变量的访
此文档下载收益归作者所有