资源描述:
《第10章 指针.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第十章指针(Pointer)指针的概念指针变量和指针运算指向数组的指针指向字符串的指针指向函数的指针指针数组7/22/20211变量与地址程序中:shortinti;floatk;内存中每个字节有一个编号-----地址…...…...2000200120022005内存02003ik编译或函数调用时为其分配内存单元变量是对程序中数据存储空间的抽象7/22/2021210.1地址和指针的概念指针变量和指针。内存单元的地址与内存单元的内容是不同的。地址:内存的每一个字节有一个编号指针变量:是保存内存地址的变量,是变量
2、的基本类型之一(P37)。指针:就是地址7/22/20213使用指针可以获得紧凑、高效的代码内存的动态分配、内存地址的直接处理指针与数组关系密切复杂数据结构的简洁表达对指针的灵活应用,是C的一个重要特色使用指针也可能使程序难懂指针操作容易出错7/22/20214指针变量的声明:基类型*指针变量名“*”指针运算符(间接运算符),表示”指向”。如:inti,*i_pointer;i_pointer=&i;i=3;10.2变量的指针和指向变量的指针变量int*iPtr;iPtr是一个仅能指向整形变量的指针变量float
3、*fPtr;fPtr是一个仅能指向实形变量的指针变量3变量i&ii_pointer*i_pointeri*i_pointer&ii_pointeri=3;*i_pointer=3*i_pointer=3;7/22/20215指针变量…...…...200020082012整型变量i10变量i_pointer20042000直接访问与间接访问直接访问:按变量地址存取变量值间接访问:通过存放变量地址的变量去访问变量例i=3;-----直接访问3例*i_pointer=20;-----间接访问207/22/20216例
4、main(){inti=10;int*p;*p=i;printf(“%d”,*p);}危险!例main(){inti=10,k;int*p;p=&k;*p=i;printf(“%d”,*p);}指针变量必须先赋值,再使用…...…...2000200820122010整型变量i10指针变量p200220042006随机7/22/202171.运算符&:取地址运算符返回其操作数的地址,单目运算符,操作数只能是变量。inty=5;int*yPtr;yPtr=&y;/*将整型变量y的内存地址赋给指针变量yPtr*/指针
5、运算符2.运算符﹡:间接访问运算符或指针运算符返回其操作数(指针变量)所指向对象的值,单目运算符,它的操作数只能是指针变量。printf(“%d”,*yPtr);输出结果:57/22/20218eg10.1通过指针变量访问整型变量#includevoidmain(){inta,b;int*pointer_1,*pointer_2;a=100;b=10;pointer_1=&a;pointer_2=&b;printf(“%d,%d”,a,b);printf(“%d,%d”,*pointer
6、_1,*pointer_2);}100,10100,107/22/20219eg10.1&a100&b*pointer_1*pointer_2abpointer_1pointer_2107/22/202110eg10.2:输入两个整数,按先大后小的顺序输出voidmain(){int*p1,*p2,*p,a,b;scanf(“%d%d”,&a,&b);p1=&a;p2=&b;if(a
7、min=%d”,*p1,*p2);}&a&b59abp2p1p&b&a59abp2p1p59a=5,b=9max=9,min=57/22/202111指针变量作为函数参数voidmain(){inta,b;int*x,*y;scanf("%d,%d",&a,&b);x=&a;y=&b;if(a
8、.2&aa&b1441b&a&bxyp2p1相当于两个函数返回值7/22/202112#includevoidswap(int*p1,int*p2);voidexchange(int*q1,int*q2,int*q3);voidmain(){int*p1,*p2,*p3,a,b,c;scanf("%d,%d,%d",&a,&b,&c);p1=&a;p2=