C语言程序设计PPT课件_第7章_指针程序设计

上传人:zw****58 文档编号:56833522 上传时间:2018-10-16 格式:PPT 页数:43 大小:534.50KB
返回 下载 相关 举报
C语言程序设计PPT课件_第7章_指针程序设计_第1页
第1页 / 共43页
C语言程序设计PPT课件_第7章_指针程序设计_第2页
第2页 / 共43页
C语言程序设计PPT课件_第7章_指针程序设计_第3页
第3页 / 共43页
C语言程序设计PPT课件_第7章_指针程序设计_第4页
第4页 / 共43页
C语言程序设计PPT课件_第7章_指针程序设计_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《C语言程序设计PPT课件_第7章_指针程序设计》由会员分享,可在线阅读,更多相关《C语言程序设计PPT课件_第7章_指针程序设计(43页珍藏版)》请在金锄头文库上搜索。

1、C语言程序设计(第3版)张磊编著 清华大学出版社,C语言程序设计(第3版)张磊编著, 2012年10月清华大学出版社出版。 该教材面向程序设计初学者编写, 适合将C语言作为第一门程序设计语言的高校学生。该教材理论教学和实验教学合二为一, 在每章之后均设有实验指导。实验指导分为基础实验和综合实验两部分。 基础实验紧密结合教材中的例题程序设置,以“理解验证完善扩充提高”为实验教学线索,重在巩固课堂教学知识,提高调试程序及完善程序的能力; 综合实验以算法设计和程序实现为重点,训练运用所学知识解决实际问题的能力。该教材同时配有程序资源和试题库。Email:,C语言程序设计(第3版)课件,C语言程序设计

2、(第3版)张磊编著 清华大学出版社,C语言程序设计第7章 指针程序设计,C语言程序设计(第3版) 张 磊 编著21世纪高等学校规划教材 清华大学出版社,C语言程序设计(第3版)张磊编著 清华大学出版社,第7章 指针程序设计,7.1 指针概述 7.2 指针变量的定义和使用 7.3 指针与数组 7.4 指针作为函数的参数 7.5 指针函数和指向函数的指针变量 7.6 指针应用举例,C语言程序设计(第3版)张磊编著 清华大学出版社,7.1 指针概述,7.1.1 指针变量 7.1.2 变量的直接访问和间接访问,C语言程序设计(第3版)张磊编著 清华大学出版社,7.1.1 指针变量,指针 每一个变量,计

3、算机都指定一段内存用以存储变量值。变量使用的这段内存的开始地址,称为变量的地址。在C语言中,把变量的地址称为指针。简单的说,指针就是变量的地址。 指针变量 专门用来保存指针的一类变量,通过指针变量就可以实现对其他变量的访问。 指针变量可以指向任何一种数据类型,如可以指向基本类型的变量,也可以指向数组等。,C语言程序设计(第3版)张磊编著 清华大学出版社,7.1.2变量的直接访问和间接访问,变量直接访问是指通过变量名直接使用变量数据。 例如: int a=10,b=20,c; c=a+b; printf(“%dn“,c); 变量间接访问是指通过指针变量去访问其他变量数据。,C语言程序设计(第3版

4、)张磊编著 清华大学出版社,7.2 指针变量的定义和使用,7.2.1 指针变量程序示例 7.2.2 定义指针变量 7.2.3 使用指针变量,C语言程序设计(第3版)张磊编著 清华大学出版社,7.2.1 指针变量程序示例,例7-1 使用指针变量输出数据程序。 /* program e7-1.c */ #include void main() int a,b;int *p1,*p2; /* 定义指针变量 */a=100; b=10;p1= ,C语言程序设计(第3版)张磊编著 清华大学出版社,7.2.2 定义指针变量,一般格式数据类型 *指针变量名1,*指针变量名2,; 例如:int *p1,*p2

5、;float *q; 指针变量允许和其他变量同时定义:char ch,*str;,注意 “数据类型”是指针变量要指向的变量的数据类型。,C语言程序设计(第3版)张磊编著 清华大学出版社,7.2.3 使用指针变量,1指针变量的初始化 一般格式数据类型 *指针变量名1=地址1,*指针变量名2=地址2,; 例如:int m;int *p=&m;,2使用赋值语句赋值 一般格式指针变量=变量地址;例如:int m=196,*p,*q;p=&m;q=p;,C语言程序设计(第3版)张磊编著 清华大学出版社,7.2.3 使用指针变量,3使用指针变量输入数据 当指针变量有了确切的指向目标后,即可使用该指针变量为

6、指向的目标输入数据。int a,*p;p= 其中,*p表示p指向的目标a。,C语言程序设计(第3版)张磊编著 清华大学出版社,7.2.2使用指针变量,例7-2 输入a和b两个整数,然后按先大后小的顺序输出。#include void main() int *p1,*p2,*p,a,b;printf(“Input: “);scanf(“%d,%d“, ,C语言程序设计(第3版)张磊编著 清华大学出版社,7.3 指针与数组,7.3.1指针与一维数组 7.3.2 指针与二维数组 7.3.3 指针与字符串 7.3.4 指针数组,C语言程序设计(第3版)张磊编著 清华大学出版社,7.3.1指针与一维数组

7、,主要内容 如何把一个指针和一维数组关联起来,即怎样使指针指向一维数组 如何使用指针访问一维数组的元素,要解决的问题 用指针实现一维数组的数据处理,C语言程序设计(第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)等价。,

8、C语言程序设计(第3版)张磊编著 清华大学出版社,7.3.1 指针与一维数组,例7-3 用指针实现一维数组的输入输出。,/* program e7-3-1.c */ #include #define N 10 void 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 10 void main() int aN;int *p=a,i;for(i=0;iN;i+)scanf(“%d“

9、,p+);p=a;for(i=0;iN;i+)printf(“%d “,*p+); ,C语言程序设计(第3版)张磊编著 清华大学出版社,7.3.1 指针与一维数组,例7-4 用指针编写一维数组的排序程序。,#include #define N 10 void 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“); ,C语言程序设计(第3版)张磊

10、编著 清华大学出版社,7.3.2指针与二维数组,主要内容 如何把一个指针和二维数组关联起来,即怎样使指针指向二维数组 如何使用指针访问二维数组的元素,要解决的问题 用指针实现二维数组的数据处理,C语言程序设计(第3版)张磊编著 清华大学出版社,7.3.2 指针与二维数组,回顾二维数组的存储,int a34;,如何使p指向首元素? aij的指针如何表示?,问题,C语言程序设计(第3版)张磊编著 清华大学出版社,7.3.2 指针与二维数组,指针和二维数组元素的对应关系 设p是指针变量,若有: p=a0; 则p+j将指向a0数组中的元素a0j。 由于a0、a1、aM-1等各个行数组依次连续存储,则对

11、于a数组中的任一元素aij,指针的一般形式如下: p+i*N+j 元素aij相应的指针表示为:*( p+i*N+j) aij也可用指针下标法表示:pi*N+j,C语言程序设计(第3版)张磊编著 清华大学出版社,7.3.2 指针与二维数组,举例 int a34=10,20,30,40,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,C语言程序设计(第3版)张磊编著 清华大学出版社,7.3.2 指针与二维数组,例7-5 求二维数组元

12、素的最大值。 /* program e7-5.c */ #include void 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); ,C语言程序设计(第3版)张磊编著 清华大学出版社,7.3.2 指针与二维数组,例7-6 求二维数组元素的最大值,并确定最大值元素所在的行和列。 /* program e7-6.c */ #include void main() int a34=3,17,8,11,66,7,8,19,12,88,7

13、,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); ,C语言程序设计(第3版)张磊编著 清华大学出版社,7.3.3 指针与字符串,使字符型指针指向字符串的方法 通过定义指针变量时初始化指向字符串。 char *p=“a string“; 利用赋值语句使指针变量指向字符串。 char ch20,*s; char *str1=ch,*str2; s=“string“; str2=str1;,C语言程序设计(第3

14、版)张磊编著 清华大学出版社,7.3.3 指针和字符串,例7-7 用指针复制字符串。 /* program e7-7.c */ #include void 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: %sn“,b); ,C语言程序设计(第3版)张磊编著 清华大学出版社,7.3.4 指针数组,数组元素为指针类型的数组称为指针数组,指针数组中的每一个元素都是指针变量。 一维指针数组的定义形式如下:数据类型 *数组

15、名数组长度; 例: char *days7; 该语句定义了一个名为days的字符型指针数组,其每一个元素都是指向char变量的指针变量。 指针数组的每个元素是指针变量,只能存放地址,所以对指向字符串的指针数组赋初值时,要把存放字符串的首地址赋给指针数组的对应元素。 例: char *days7=“Sunday“,“Monday“,“Tuesday“, “Wednesday“, “Thursday“,“Friday“,“Saturday“;,C语言程序设计(第3版)张磊编著 清华大学出版社,7.3.4 指针数组,char *days7=“Sunday“,“Monday“,“Tuesday“, “Wednesday“, “Thursday“,“Friday“,“Saturday“;,例7-9 分行输出days数组指向的字符串。 #include void main() int i;char *days7=“Sunday“,“Monday“,“Tuesday“, “Wednesday“, “Thursday“,“Friday“,“Saturday“;for(i=0;i7;i+)puts(daysi); ,C语言程序设计(第3版)张磊编著 清华大学出版社,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 教育学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号