c语言教程(课件)第6章.ppt
《c语言教程(课件)第6章.ppt》由会员分享,可在线阅读,更多相关《c语言教程(课件)第6章.ppt(29页珍藏版)》请在三一文库上搜索。
1、第六章 指针,地址和指针的概念,指针是C中一个重要概念,也是C的重要特色,可以有效地表示复杂的数据结构,能动态分配内存,能直接处理内存地址等。 指针的概念比较复杂,使用很灵活,不易掌握,因此要多做练习。,6-1 指针概述,地址与指针 地址与取地址运算 C语言中变量、数组、函数等都占用一定的内存空间,地址是指该内存空间的第一个字节的地址。 C语言中取地址运算符:&。 指针与指针变量 指针:就是地址,是变量的地址。 指针变量:存放变量地址的变量 。,指针的类型与指针的定义 指针所指向的对象的类型即是指针的类型。 指针的定义:只要在变量名前加“ * ”即可。 例: int * p 表示p是一个指向整
2、型变量的指针。 注意: * 表示其后的变量是指针,指针变量是p而非*p。 指针变量一般占2个字节,用来存放一个地址。 例L6-0-1 变量、地址、指针、指针的地址。,指针变量的引用 &运算符:取地址运算。 * 运算符:指针运算(指向运算,或间接运算),*p表示p所指向的变量。 例L6-1 &与*运算符。,i1,10,&i1,p1,i2,20,&i2,p2,例L6-2 使两个指针变量交换指向。,例L6-3 交换两个指针变量所指向变量的值。,指向指针的指针 int I,*p1,*p2;,3,i,&i,p1,&p1,p2,例L6-3-2,多重指针:从理论上讲,可以有多重指针,但一般极易出错,不提倡使
3、用多重指针。 例L6-4 多重指针。,习题5-9 统计单词与空格数。 习题5-14 字符串转换为大写、小写(数组法) 习题5-14-2 字符串转换为大写、小写(指针法),6-2 指针与数组,一维数组的指针表示 ai:下标法访问数组元素。 *(a+i):地址法访问数组元素。 (a+i表示:从数组a的首地址开始的第i个元素。) 例L6-5,ffd0,ffd2,ffd4,ffd6,ffd8,注意:,对数组a,不能用自增(减)进行运算(a+,a-),因为数组的首地址是一个常数。 虽然可用多种方法访问数组元素,效率不同,用指针访问的速度最快,它不要进行转换。 用指针访问数组时(主要是赋值),一定要记住不
4、能越界,否则可能带来严重后果。 用指针访问数组时,因为总是从指针当前位置开始,所以要注意指针的当前值。(例L6-5的最后一次。) 例L6-6 输入若干个温度,求平均值。(用数组) 例L6-6-2 输入若干个温度,求平均值。(用指针),强调一维数组的两个结论,C中,一维数组名代表该数组的起始地址。 C中,一维数组的任何一个元素的地址,都可用其数组名加上一个偏移量来表示。 这两个结论可以推广至任意维数组都适用。,二维数组的指针表示法,二维数组a 可以看成是由以下元素构成的一个一维数组: a0,a1,a2,ai, 所以ai既是一个广义一维数组的元素,也是一个一维数组ai的名字(一维数组的首地址),所
5、以a是指向ai起始地址的指针,因ai是一个一维数组名,即是一个一维数组的首地址,也就是指针,可见a是一个二级指针。,二维数组元素及地址的引用:例L6-7-0,例L6-7 指向数组元素的指针变量。,指向一维数组的指针,int (*)p5 :表示 P是指向一个一维数组的指针(指向该数组的首地址)。P+表示将指针移向下一个一维数组(指向其首地址)。所以可用它处理二维数组,参见例L6-8。,指针与字符串,字符串是存放在字符数组中的,因此可用指针来访问字符中的字符。 例L6-10 用三种方式输出字符串: 1、直接输出字符串数组string: printf(“%s”,string) 2、直接用指向字符串的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 教程 课件
链接地址:https://www.31doc.com/p-2142834.html