《指针程序设计》PPT课件.ppt
《《指针程序设计》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《指针程序设计》PPT课件.ppt(42页珍藏版)》请在三一办公上搜索。
1、语言程序设计(第3版)张磊编著 清华大学出版社,C语言程序设计第7章 指针程序设计,C语言程序设计(第3版)张 磊 编著 21世纪高等学校规划教材 清华大学出版社,语言程序设计(第3版)张磊编著 清华大学出版社,第7章 指针程序设计,7.1 指针概述 7.2 指针变量的定义和使用7.3 指针与数组 7.4 指针作为函数的参数7.5 指针函数和指向函数的指针变量7.6 指针应用举例,语言程序设计(第3版)张磊编著 清华大学出版社,7.1 指针概述,7.1.1 指针变量7.1.2 变量的直接访问和间接访问,语言程序设计(第3版)张磊编著 清华大学出版社,7.1.1 指针变量,指针每一个变量,计算机
2、都指定一段内存用以存储变量值。变量使用的这段内存的开始地址,称为变量的地址。在C语言中,把变量的地址称为指针。简单的说,指针就是变量的地址。指针变量专门用来保存指针的一类变量,通过指针变量就可以实现对其他变量的访问。指针变量可以指向任何一种数据类型,如可以指向基本类型的变量,也可以指向数组等。,语言程序设计(第3版)张磊编著 清华大学出版社,变量的直接访问和间接访问,变量直接访问是指通过变量名直接使用变量数据。例如:int a=10,b=20,c;c=a+b;printf(%dn,c);变量间接访问是指通过指针变量去访问其他变量数据。,语言程序设计(第3版)张磊编著 清华大学出版社,7.2 指
3、针变量的定义和使用,7.2.1 指针变量程序示例 7.2.2 定义指针变量7.2.3 使用指针变量,语言程序设计(第3版)张磊编著 清华大学出版社,7.2.1 指针变量程序示例,例7-1 使用指针变量输出数据程序。/*program e7-1.c*/#includevoid main()int a,b;int*p1,*p2;/*定义指针变量*/a=100;b=10;p1=,语言程序设计(第3版)张磊编著 清华大学出版社,7.2.2 定义指针变量,一般格式 数据类型*指针变量名1,*指针变量名2,;例如:int*p1,*p2;float*q;指针变量允许和其他变量同时定义:char ch,*st
4、r;,注意“数据类型”是指针变量要指向的变量的数据类型。,语言程序设计(第3版)张磊编著 清华大学出版社,7.2.3 使用指针变量,1指针变量的初始化一般格式 数据类型*指针变量名1=地址1,*指针变量名2=地址2,;例如:int m;int*p=&m;,2使用赋值语句赋值一般格式 指针变量=变量地址;例如:int m=196,*p,*q;p=&m;q=p;,语言程序设计(第3版)张磊编著 清华大学出版社,7.2.3 使用指针变量,3使用指针变量输入数据当指针变量有了确切的指向目标后,即可使用该指针变量为指向的目标输入数据。int a,*p;p=其中,*p表示p指向的目标a。,语言程序设计(第
5、3版)张磊编著 清华大学出版社,使用指针变量,例7-2 输入a和b两个整数,然后按先大后小的顺序输出。#includevoid main()int*p1,*p2,*p,a,b;printf(Input:);scanf(%d,%d,语言程序设计(第3版)张磊编著 清华大学出版社,7.3 指针与数组,指针与一维数组 7.3.2 指针与二维数组 7.3.3 指针与字符串 7.3.4 指针数组,语言程序设计(第3版)张磊编著 清华大学出版社,指针与一维数组,主要内容如何把一个指针和一维数组关联起来,即怎样使指针指向一维数组如何使用指针访问一维数组的元素,要解决的问题用指针实现一维数组的数据处理,语言程
6、序设计(第3版)张磊编著 清华大学出版社,7.3.1 指针与一维数组,定义指向一维数组的指针变量 int a5=10,20,30,40,50,*p;p=&a0;,用指针p访问数组元素 当p指向a0后 p与&a0等价,*p与a0等价;p+1与&a1等价,*(p+1)与a1等价;p+i与&ai等价,*(p+i)与ai等价;,也可以直接使用数组名为指针变量赋值:p=a;,也可以使用带下标的指针变量表示数组元素:pi与ai等价,也与*(p+i)等价。,语言程序设计(第3版)张磊编著 清华大学出版社,7.3.1 指针与一维数组,例7-3 用指针实现一维数组的输入输出。,/*program e7-3-1.
7、c*/#include#define N 10void main()int aN;int*p=a,i;for(i=0;iN;i+)scanf(%d,p+i);for(i=0;iN;i+)printf(%d,*(p+i);,/*program e7-3-2.c*/#include#define N 10void main()int aN;int*p=a,i;for(i=0;iN;i+)scanf(%d,p+);p=a;for(i=0;iN;i+)printf(%d,*p+);,语言程序设计(第3版)张磊编著 清华大学出版社,7.3.1 指针与一维数组,例7-4 用指针编写一维数组的排序程序。,#
8、include#define N 10void main()int aN,i,j,temp,*p;printf(Data:);for(p=a;p*(p+1)temp=*p;*p=*(p+1);*(p+1)=temp;printf(nResult:);for(p=a;pa+N;p+)printf(%4d,*p);printf(n);,语言程序设计(第3版)张磊编著 清华大学出版社,指针与二维数组,主要内容如何把一个指针和二维数组关联起来,即怎样使指针指向二维数组如何使用指针访问二维数组的元素,要解决的问题用指针实现二维数组的数据处理,语言程序设计(第3版)张磊编著 清华大学出版社,7.3.2 指
9、针与二维数组,回顾二维数组的存储,int a34;,如何使p指向首元素?aij的指针如何表示?,问题,语言程序设计(第3版)张磊编著 清华大学出版社,7.3.2 指针与二维数组,指针和二维数组元素的对应关系设p是指针变量,若有:p=a0;则p+j将指向a0数组中的元素a0j。由于a0、a1、aM-1等各个行数组依次连续存储,则对于a数组中的任一元素aij,指针的一般形式如下:p+i*N+j元素aij相应的指针表示为:*(p+i*N+j)aij也可用指针下标法表示:pi*N+j,语言程序设计(第3版)张磊编著 清华大学出版社,7.3.2 指针与二维数组,举例int a34=10,20,30,40
10、,50,60,70,80,90,91,92,93;int*p=a0;则数组a的元素a12对应的指针为:p+1*4+2元素a12也就可以表示为:*(p+1*4+2)用下标表示法,a12表示为:p1*4+2,语言程序设计(第3版)张磊编著 清华大学出版社,7.3.2 指针与二维数组,例7-5 求二维数组元素的最大值。/*program e7-5.c*/#includevoid main()int a34=3,17,8,11,66,7,8,19,12,88,7,16;int*p,max;for(p=a0,max=*p;pmax)max=*p;printf(Max=%dn,max);,语言程序设计(第
11、3版)张磊编著 清华大学出版社,7.3.2 指针与二维数组,例7-6 求二维数组元素的最大值,并确定最大值元素所在的行和列。/*program e7-6.c*/#includevoid main()int a34=3,17,8,11,66,7,8,19,12,88,7,16;int*p=a0,max,i,j,row,col;max=a00;row=col=0;for(i=0;imax)max=*(p+i*4+j);row=i;col=j;printf(a%d%d=%dn,row,col,max);,语言程序设计(第3版)张磊编著 清华大学出版社,7.3.3 指针与字符串,使字符型指针指向字符串
12、的方法 通过定义指针变量时初始化指向字符串。char*p=a string;利用赋值语句使指针变量指向字符串。char ch20,*s;char*str1=ch,*str2;s=string;str2=str1;,语言程序设计(第3版)张磊编著 清华大学出版社,7.3.3 指针和字符串,例7-7 用指针复制字符串。/*program e7-7.c*/#includevoid main()char a=I am a student.;char b30,*p1,*p2;int i;for(p1=a,p2=b;*p1!=0;p1+,p2+)*p2=*p1;*p2=0;printf(String b:
13、%sn,b);,语言程序设计(第3版)张磊编著 清华大学出版社,7.3.4 指针数组,数组元素为指针类型的数组称为指针数组,指针数组中的每一个元素都是指针变量。一维指针数组的定义形式如下:数据类型*数组名数组长度;例:char*days7;该语句定义了一个名为days的字符型指针数组,其每一个元素都是指向char变量的指针变量。指针数组的每个元素是指针变量,只能存放地址,所以对指向字符串的指针数组赋初值时,要把存放字符串的首地址赋给指针数组的对应元素。例:char*days7=Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday;,语
14、言程序设计(第3版)张磊编著 清华大学出版社,7.3.4 指针数组,char*days7=Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday;,例7-9 分行输出days数组指向的字符串。#includevoid main()int i;char*days7=Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday;for(i=0;i7;i+)puts(daysi);,语言程序设计(第3版)张磊编著 清华大学出版社,7.4 指针作为函数的参数,7.4.1 简单指针变量作函数参数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 指针程序设计 指针 程序设计 PPT 课件
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5515995.html