程序设计基础第10章指针.ppt

程序设计基础第10章指针.ppt

ID:56367737

大小:472.50 KB

页数:75页

时间:2020-06-12

程序设计基础第10章指针.ppt_第1页
程序设计基础第10章指针.ppt_第2页
程序设计基础第10章指针.ppt_第3页
程序设计基础第10章指针.ppt_第4页
程序设计基础第10章指针.ppt_第5页
资源描述:

《程序设计基础第10章指针.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第十章指针10.1地址和指针的概念内存区的每一个字节有一个编号,这就是“地址”。200020042008地址:又叫“指针”200420082000int型变量i的值是3,地址是2000;有一个指针ipointer,值为2000;那么这个ipointer就指向以其值2000为地址的内存单元,即,指向变量i如果有一个变量专门用来存放另一变量的地址(即指针),则它称为“指针变量”。i_pointer就是一个指针变量。指针变量:这种变量的值是某变量的地址,可以指向以该值为地址的单元类型是一个指针指针变量除了类型是指针外,会不会涉及其它类型?指针变量需不需要区分究竟它所指向的

2、内存单元中的数据是什么类型的?之所以要用指针变量,就是希望能够通过它直接访问某个内存单元中的数据,既然要访问这些数,必然涉及到这些数的操作,既然有操作,必然和类型相关。所以定义指针型变量时,必须指明该指针变量所指向的内存单元中数据的类型10.2变量的指针和指向变量的指 针变量10.2.1定义一个指针变量要定义一个指针变量,要指明两种类型,一种是指针型,一种是所指向的单元中数据的类型基本格式为——所指向的数据类型*指针变量名如int*i_point;float*f_point_a;char*c_point1;在定义指针变量时要注意两点:指针变量前面的“*”,表示该变量

3、的类型为指针型变量。例:float*pointer_1;指针变量名是pointer_1,而不是*pointer_1。(2)在定义指针变量时必须指定基类型。只有整型变量的地址才能放到指向整型变量的指针变量中。floata;int*pointer_1;想将变量a的地址赋给指针变量pointer_1是错误的10.2.2指针变量的引用给它赋值&——地址运算符,取地址指针变量名=&基类型变量名如,i_pointer=&i;f_point=&f;c_point1=&ch;用赋值语句使一个指针变量得到另一个变量的地址,从而使它指向一个该变量。例如:pointer_1=&i;poi

4、nter_2=&j;从它取值*——指针运算符,表示紧跟在其后的那个指针变量所指向的内存单元*指针变量名如,*i_point,j=*i_point;3j注意:指针变量只有赋值后才能使用,使用没有被赋值的指针变量会很危险,有可能造成系统瘫痪给指针变量赋值时,一定要注意类型的一致可将一个已赋值的指针赋给另一个同类型的指针,如:inta,*p,*q;p=&a;q=p;暂时不用的指针变量可以赋值NULL(空指针)绝对不要给指针变量直接赋数字值,如,point_a=2000;例10.1通过指针变量访问整型变量#includevoidmain(){inta,b;

5、int*pointer_1,*pointer_2;a=100;b=10;pointer_1=&a;/*把变量a的地址赋给pointer_1*/pointer_2=&b;/*把变量b的地址赋给pointer_2*/printf(″%d,%dn″,a,b);printf(″%d,%dn″,*pointer_1,*pointer_2);}10010对“&”和“*”运算符说明:如果已执行了语句pointer_1=&a;(1)&*pointer_1的含义是什么?“&”和“*”两个运算符的优先级别相同,但按自右而左方向结合。因此,&*pointer_1与&a相同,即变量a的

6、地址。&*pointer_1与pointer_1等价。如果有pointer_2=&*pointer_1;它的作用是将&a(a的地址)赋给pointer_2,如果pointer_2原来指向b,经过重新赋值后它已不再指向b了,而指向了a。(2)*&a的含义是什么?(3)(*pointer_1)++相当于a++。*point_1++相当于*(point_1++)求出point_1所指向的单元中的值,然后point_1中的地址增1个单位(根据指针类型决定单位字节数)先进行&a运算,得a的地址,再进行*运算。*&a和*pointer_1的作用是一样的,它们都等价于变量a。即*

7、&a与a等价。例10.2输入a和b两个整数,按先大后小的顺序输出a和b。#includevoidmain(){int*p1,*p2,*p,a,b;scanf(″%d,%d″,&a,&b);p1=&a;p2=&b;if(a<b){p=p1;p1=p2;p2=p;}printf(″a=%d,b=%dnn″,a,b);printf(″max=%d,min=%dn″,*p1,*p2);}运行情况如下:5,9↙a=5,b=9max=9,min=5指针可以作为函数的形参和实参——传址调用。若将存放变量的地址传给被调函数,被调函数的形参必须是指针型变量

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。