教育专题:第5章指针.ppt

上传人:hyn****60 文档编号:70706018 上传时间:2023-01-25 格式:PPT 页数:25 大小:172KB
返回 下载 相关 举报
教育专题:第5章指针.ppt_第1页
第1页 / 共25页
教育专题:第5章指针.ppt_第2页
第2页 / 共25页
点击查看更多>>
资源描述

《教育专题:第5章指针.ppt》由会员分享,可在线阅读,更多相关《教育专题:第5章指针.ppt(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第5 5章章 指指 针针指针的基本概念指针的基本概念5.1指针运算指针运算 5.2指针与字符串操作指针与字符串操作5.35.1 5.1 指针的基本概念指针的基本概念5.1.1 指针指针5.1.2 指针的定义与引用指针的定义与引用1指针的定义指针的定义 所谓指针变量就是用来存放内存地址所谓指针变量就是用来存放内存地址的变量。的变量。指针变量的定义方式如下:指针变量的定义方式如下:类型类型*变量名变量名1;/*定义单个指针变量定义单个指针变量*/类型类型*变量名变量名1,*变量名变量名2;/*定义多个定义多个同类型指针变量同类型指针变量*/综上所述,指针变量的特点如下。综上所述,指针变量的特点如

2、下。指针是用来存储对象的内存地址的变指针是用来存储对象的内存地址的变量,对象可以是简单类型数据(量,对象可以是简单类型数据(int,char等)等),也可以是数组、函数,还可以是另一个,也可以是数组、函数,还可以是另一个指针。指针。指针变量的值只能是内存中存在的一指针变量的值只能是内存中存在的一个地址,而不是一个任意的整数。个地址,而不是一个任意的整数。有关指针的说明很多是由指针、数组、有关指针的说明很多是由指针、数组、函数说明组合而成的。但并不是可以任意函数说明组合而成的。但并不是可以任意组合,例如数组不能由函数组成,即数组组合,例如数组不能由函数组成,即数组元素不能是一个函数;函数也不能返

3、回一元素不能是一个函数;函数也不能返回一个数组或返回另一个函数。个数组或返回另一个函数。2指针的引用指针的引用 对指针变量的引用,由取地址运算符对指针变量的引用,由取地址运算符“&”和取值运算符和取值运算符“*”来完成。来完成。取地址运算符取地址运算符“&”在前面的学习中已在前面的学习中已经见过,例如,在使用经见过,例如,在使用scanf()函数进行输函数进行输入时,就使用了入时,就使用了“&”运算符将数据存储到运算符将数据存储到指定的存储空间。指定的存储空间。3空指针空指针NULL 为指针变量赋值时,还可以用其他的为指针变量赋值时,还可以用其他的指针或使用指针或使用NULL来进行。来进行。4

4、使用指针的注意事项使用指针的注意事项 指针是指针是C语言中具有强大功能的工具,语言中具有强大功能的工具,具有极大的灵活性,可以为程序设计者带具有极大的灵活性,可以为程序设计者带来方便,但指针同时也最难掌握,最易出来方便,但指针同时也最难掌握,最易出错。如果在程序中指针引用出现错误,轻错。如果在程序中指针引用出现错误,轻则程序不能得到正确结果,重则程序崩溃,则程序不能得到正确结果,重则程序崩溃,严重者还会影响其他程序和系统的正常运严重者还会影响其他程序和系统的正常运行,因此,在使用指针时一定要多加注意。行,因此,在使用指针时一定要多加注意。5.2 5.2 指指 针针 运运 算算5.2.1 指针与

5、数组指针与数组 指针变量除了可以对其引用地址的内指针变量除了可以对其引用地址的内容进行运算外,其本身也可进行运算。指容进行运算外,其本身也可进行运算。指针是内存中的一个地址,对指针本身的运针是内存中的一个地址,对指针本身的运算只能是指针在内存中位置的改变,即指算只能是指针在内存中位置的改变,即指针可以作加、减运算,其结果是另一个内针可以作加、减运算,其结果是另一个内存地址。存地址。由于指针运算的结果也是一个内存地由于指针运算的结果也是一个内存地址,为了使该地址是一个程序中的合法地址,为了使该地址是一个程序中的合法地址,指针的运算通常都是针对数组而进行址,指针的运算通常都是针对数组而进行的。的。

6、指针可以用来对数组进行访问。数组指针可以用来对数组进行访问。数组的指针是指数组在内存中的起始地址,数的指针是指数组在内存中的起始地址,数组元素的指针是指数组元素在内存中的起组元素的指针是指数组元素在内存中的起始地址。始地址。数组名也可以理解为一个指针,不过数组名也可以理解为一个指针,不过数组名是一个指针常量,不能改变。可以数组名是一个指针常量,不能改变。可以用数组名来将数组的首地址赋给指针。用数组名来将数组的首地址赋给指针。数组指针的定义与普通指针的定义方数组指针的定义与普通指针的定义方法相同,数组指针的引用既可以用指针方法相同,数组指针的引用既可以用指针方式来进行,也可以用数组下标方式来进行

7、,式来进行,也可以用数组下标方式来进行,如果指针如果指针p是指向数组是指向数组a首元素的指针,首元素的指针,则则*(p+n)等价于等价于an,如果指针,如果指针p是指向数是指向数组元素组元素ak的指针,则的指针,则*(p+n)等价于等价于ak+n。5.2.2 指针的运算指针的运算 在指针进行运算之前,必须先将指针在指针进行运算之前,必须先将指针指向一个数组,当指针指向数组时,可以指向一个数组,当指针指向数组时,可以进行如下的运算:进行如下的运算:指针加上一个整数,结果是指向该数指针加上一个整数,结果是指向该数组的另一个元素的地址;组的另一个元素的地址;指针减去一个整数,结果是指向该数指针减去一

8、个整数,结果是指向该数组的另一个元素的地址;组的另一个元素的地址;指针自增(指针自增(+),结果是指针指向该),结果是指针指向该数组的下一个元素;数组的下一个元素;指针自减(指针自减(-),结果是指针指向该),结果是指针指向该数组的上一个元素;数组的上一个元素;两个指针相减(要求两个指针都指向两个指针相减(要求两个指针都指向同一数组的元素),结果为两个指针相对同一数组的元素),结果为两个指针相对移动的元素个数;移动的元素个数;比较两个指针的大小(要求两个指针比较两个指针的大小(要求两个指针都指向同一数组的元素),实质上是比较都指向同一数组的元素),实质上是比较两个指针所指数组元素下标的大小。两

9、个指针所指数组元素下标的大小。5.3 5.3 指针与字符串操作指针与字符串操作5.3.1 字符串指针字符串指针 可以定义一个字符型指针,使该指针可以定义一个字符型指针,使该指针指向字符串起始地址,就可以使用该指针指向字符串起始地址,就可以使用该指针来进行字符串的引用了,这个指针称为字来进行字符串的引用了,这个指针称为字符串的指针。符串的指针。定义字符指针的方式如下:定义字符指针的方式如下:char*指针变量名指针变量名;/*定义时不定义时不初始化初始化*/char*指针变量名指针变量名=字符串常量字符串常量;/*定义时进定义时进行初始化赋值行初始化赋值*/5.3.2 字符指针与字符数组字符指针

10、与字符数组1字符指针与字符数组的关系字符指针与字符数组的关系 字符指针也可以用于指向一个字符数字符指针也可以用于指向一个字符数组的首地址,以此来引用该字符数组的内组的首地址,以此来引用该字符数组的内容。容。2字符指针和字符数组的区别字符指针和字符数组的区别 字符数组在定义时,不论是否进行初字符数组在定义时,不论是否进行初始化,都会为其分配存储空间,以存储数始化,都会为其分配存储空间,以存储数组的内容,它存储的是字符串本身的内容。组的内容,它存储的是字符串本身的内容。字符指针则不同,如果字符指针在字字符指针则不同,如果字符指针在字义时没有进行初始化,则不会为其分配字义时没有进行初始化,则不会为其

11、分配字符串的存储空间,而只是分配一个指针变符串的存储空间,而只是分配一个指针变量的存储单元,用于存储指针;如果定义量的存储单元,用于存储指针;如果定义时进行了初始化,则在分配一块连续内存时进行了初始化,则在分配一块连续内存空间存储字符串外,还分配一个存放指针空间存储字符串外,还分配一个存放指针变量的存储单元,并将字符串存储空间的变量的存储单元,并将字符串存储空间的起始地址赋给字符指针。起始地址赋给字符指针。使用指针与数组进行字符串处理时,使用指针与数组进行字符串处理时,不同的是,指针可以通过赋值运算进行改不同的是,指针可以通过赋值运算进行改变,而数组名则不能改变。变,而数组名则不能改变。字符数

12、组一旦定义,其使用的存储空字符数组一旦定义,其使用的存储空间就是固定的,在任何时候都可以使用数间就是固定的,在任何时候都可以使用数组名对数组进行访问。字符指针变量只是组名对数组进行访问。字符指针变量只是一个指向内存地址的指针,它在程序中改一个指向内存地址的指针,它在程序中改变后将不再指向原来的内容。变后将不再指向原来的内容。字符数组只能在初始化时进行字符串字符数组只能在初始化时进行字符串的整体赋值,在程序运行中则不能;而字的整体赋值,在程序运行中则不能;而字符指针变量既可以在初始化时进行字符串符指针变量既可以在初始化时进行字符串的整体赋值,又可以在程序运行中进行赋的整体赋值,又可以在程序运行中

13、进行赋值,因为这个字符指针只是一个指针,在值,因为这个字符指针只是一个指针,在程序中是可变的,在程序中赋值后将指向程序中是可变的,在程序中赋值后将指向所赋的字符串的内存起始地址。所赋的字符串的内存起始地址。字符数组名是一个常量,在程序中只字符数组名是一个常量,在程序中只能引用,不能改变;而字符指针是一个变能引用,不能改变;而字符指针是一个变量,在程序中可以指向任一位置,因此应量,在程序中可以指向任一位置,因此应该注意指针的位置,以防止引用出错。该注意指针的位置,以防止引用出错。还有一点需要注意,通过指向字符串还有一点需要注意,通过指向字符串的指针变量或字符数组名可以一次性输出的指针变量或字符数组名可以一次性输出整个字符串,但对于其他类型的数组却不整个字符串,但对于其他类型的数组却不能一次性整体输出。能一次性整体输出。5.3.3 指针数组指针数组 可以将一个数组定义为指针类型,这可以将一个数组定义为指针类型,这个数组称为指针数组。个数组称为指针数组。指针数组定义如下:指针数组定义如下:数据类型数据类型*数组名数组名下标下标;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁