C语言课件第五章指针.ppt
《C语言课件第五章指针.ppt》由会员分享,可在线阅读,更多相关《C语言课件第五章指针.ppt(25页珍藏版)》请在三一办公上搜索。
1、第五章 指 针,5.1 指针的概念,指针是C语言的重要特征,是C语言访问内存数据和程序的灵活和有效的手段。,C语言的指针支持:函数的地址调用;动态分配内存;数组的地址引用。,内存、地址、指针,内存存放了计算机正在运行的程序和程序正在使用的数据。内存的基本单元是字节(Byte)。,为了访问内存单元,CPU给每个内存单元一个编号,该编号称为该内存单元的地址。,变量是程序中可以改变的量,当说明变量时,系统将为其在内存中开辟相应得内存单元。由此确定变量的地址及内存中的表示方式。,2000H,2001H,2002H,2003H,int a=0;,a的内存单元,a的地址&a,如果有一变量p,其内容存放了a
2、的地址&a,通过p也可实现对a的访问,p称为指针,并指向a。,00H,20H,0,0,p,指针的说明,指针是特殊类型的变量,其内容是变量的地址。在使用前必须说明,说明某标识符是指针类型,并可指向某种类型的对象。,指针的说明格式:type*pname1,*pnamen;,标识符命名的指针变量名。,指针标志。,指针指向对象的类型。,int*p,*q;/*p、q是指向整型变量的指针。*/,float*pfValue,*pf;/*pfValue和pf是指向浮点型的指针。*/,指针的引用,定义指针的目的是通过指针引用内存对象,指针的引用应按如下步骤进行:,说明指针,int a=0,*p;,指针指向对象,
3、p=,通过指针引用对象,*p=*p+2;,指针操作的两种运算:,取地址运算&a表示取变量a地址的运算。,间接运算*p表示取指针p指向变量内容的运算。,int a,*p;,2000H,a,p,p=/*p指向a。*/,2000H,*p=2;,2,举例:,#include void main(void)int x,*p;x=55;p=,2000H,x,p,2000H,55,65,关于指针的说明:,指针必须指向对象后,才能引用。,int*p;*p=2;/*Error!*/,&和*为互补运算。,int a,*p;p=则:&*p p*&a a,指针的运算,指针是特殊类型的变量,其内容是变量的地址,因此,指
4、针的运算及结果一定要符合地址逻辑。,五种算术运算,int a,b,*p1,*p2;p1=,a,2000H,b,2400H,p1,p2,2000H,2400H,p1+;/*含义指向a后的整型单元*/,2002H,2002H,p1-;/*指向a前的整型单元*/,p1+n;/*指向a后的n个整型单元*/,p1-n;/*指向a前的n个整型单元*/,p2-p1;/*a和b之间差的单元数*/,结果200H,p n 相当于:p的实际内容 nsizeof(*p);,六种关系运算,比较两个同类型变量之间的地址关系。,p1p2;,指针运算说明,#include void main(void)int a,b,*p1
5、,*p2;a=2;b=3;p1=,差别,a,&a 2000H,b,&b 2400H,p1,p2,2,3,2000H,2400H,5.2 指针与数组,数组是同类型的变量的集合,各元素按下标的特定顺序占据一段连续的内存,各元素的地址也连续,指针对数组元素非常方便。,指针与一维数组,通过指针引用数组元素可以分以下三个步骤:,说明指针和数组,int*p,a10;,指针指向数组,p=a;/*指向数组的首地址*/p=/*指向数组的首地址*/,通过指针引用数组元素,当指针指向数组的首地址时,则下标为i的元素地址为:p+i 或a+i,引用数组元素可以有三种方法:,下标法:a i 指针法:*(p+i)数组名法:
6、*(a+i),注意:数组名是地址常量,不能改变!,a=p;/*Error!*/,举例:打印数组中的奇数。,#include void main(void)int i,a 10;for(i=0;i10;i+)scanf(“%d”,数组元素法。,循环输入。,循环判断,满足条件输出。,数组名法。,a+i,*(a+i),指针法。,*p;,p=a;,p+,*(p+i),结果是否正确?,p=a;*p=*,注意指针在运算时的变化。,指针与字符串(字符数组),字符串在内存中可以存储为两种形式:,字符数组字符串常量,可以使指针指向字符数组或字符串常量,通过指针引用字符数组或字符串的各个字符。,指针与字符数组:,
7、char*chp,ch=”Hello!”;/*说明字符指针和字符数组*/chp=ch;/*指针指向字符数组*/putchar(*(chp+2);/*通过指针引用数组元素*/,指针与字符串:,char*chp;/*说明字符指针*/chp=“Hello!”;/*指针指向字符串*/puts(chp);/*通过指针引用字符串*/,说明指针时,可以同时赋初值,如:,char*chp=“Hello!”;,赋值表示将字符串的地址赋给指针!,将无符号的八进制字符串转换为十进制整数。,#include void main(void)char*p,s6;int i,n=0;p=s;gets(p);for(;*p!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课件 第五 指针

链接地址:https://www.31ppt.com/p-6504362.html