9.2 指针与一维数组(课件)-《C语言程序设计》同步教学(清华大学出版)

2024-08-12
| 22页
| 103人阅读
| 26人下载
普通

内容正文:

《C语言程序设计》 (清华大学出版) 同步教学 1 第九章 指 针 第9章 指 针(Pointer) 9.1 指针概述 9.2 指针与一维数组 9.3 指针与二维数组 9.4 指针与字符串 9.5 指针与函数 9.6 指针数组与多级指针 2 指针与数组关系密切,可通过指针来引用数组元素。 一维数组的指针: 数组中各元素所占连续存储单元的起始地址。 一维数组元素的指针: 该元素所占存储单元的首地址。 每个数组元素实质上就是一个变量。 9.2 指针与一维数组 第九章 指 针 3 p p+1 int a[5]={2, 4, 23, 6, 78}; int *p; p=a; p+1 若是 :p++ 基类型是 int , p+1相当于加上 4 个字节。 第九章 指 针 …….. 4的高位字节 4的低位字节 2的高位字节 2的低位字节 2000 2004 2008 2012 2016 a[0] a[1] a[2] a[3] a[4] 23 6 78 p 4 数组名就是一个指针 只是不能修改这个指针的指向 可以定义函数的参数为数组 指针也可当作数组名使用 int *p, a[10]; p = a; 数组元素的几种等价引用形式 a[i] *(a+i) p[i] *(p+i) 6000 6001 6002 6003 6004 6005 6006 6007 a[0] a[1] a[2] a[3] a a+1 a+2 6000 6001 6002 6003 6004 6005 6006 6007 a[0] a[1] a[2] a[3] a p p++ p++ 9.2 指针与一维数组 第九章 指 针 5 #include <stdio.h> void main() { int i, t, a[5], *p, *max; for(i=0; i<5; i++) scanf("%d", a+i); /* 输入数组 */ max=a; /* 使 max 指向数组的第1个元素 */ for(p=a+1; p<a+5; p++) if ( *max < *p) max = p; a 5 4 2 10 1 max p 【例9.3】输入一组数据存放在数组中,找出最大值,使它与数组中的第1个元素的值交换位置,其余数据位置不变,并输出该组数。 第九章 指 针 9.2 指针与一维数组 6 #include <stdio.h> void main() { int i, t, a[5], *p, *max; for(i=0; i<5; i++) scanf("%d", a+i); /* 输入数组 */ max=a; /* 使 max 指向数组的第1个元素 */ for(p=a+1; p<a+5; p++) if ( *max < *p) max = p; a 5 4 2 10 1 max p 【例9.3】输入一组数据存放在数组中,找出最大值,使它与数组中的第1个元素的值交换位置,其余数据位置不变,并输出该组数。 第九章 指 针 9.2 指针与一维数组 7 #include <stdio.h> void main() { int i, t, a[5], *p, *max; for(i=0; i<5; i++) scanf("%d", a+i); /* 输入数组 */ max=a; /* 使 max 指向数组的第1个元素 */ for(p=a+1; p<a+5; p++) if ( *max < *p) max = p; a 5 4 2 10 1 max p 【例9.3】输入一组数据存放在数组中,找出最大值,使它与数组中的第1个元素的值交换位置,其余数据位置不变,并输出该组数。 第九章 指 针 9.2 指针与一维数组 8 #include <stdio.h> void main() { int i, t, a[5], *p, *max; for(i=0; i<5; i++) scanf("%d", a+i); /* 输入数组 */ max=a; /* 使 max 指向数组的第1个元素 */ for(p=a+1; p<a+5; p++) if ( *max < *p) max = p; a 5 4 2 10 1 max p 【例9.3】输入一组数据存放在数组中,找出最大值,使它与数组中的第1个元素的值交换位置,其余数据位置不变,并输出该组数。 第九章 指 针 9.2 指针与一维数组 9 #include <stdio.h> void main() { int i, t, a[5], *p, *max; for(i=0; i<5; i++) scanf("%d", a+i); /* 输入数组 */ max=a; /* 使 max 指向数组的第1个元素 */ for(p=a+1; p<a+5; p++) if ( *max < *p) max = p; a 5 4 2 10 1 max p 【例9.3】输入一组数据存放在数组中,找出最大值,使它与数组中的第1个元素的值交换位置,其余数据位置不变,并输出该组数。 第九章 指 针 9.2 指针与一维数组 10 #include <stdio.h> void main() { int i, t, a[5], *p, *max; for(i=0; i<5; i++) scanf("%d", a+i); /* 输入数组 */ max=a; /* 使 max 指向数组的第1个元素 */ for(p=a+1; p<a+5; p++) if ( *max < *p) max = p; a 5 4 2 10 1 max p 【例9.3】输入一组数据存放在数组中,找出最大值,使它与数组中的第1个元素的值交换位置,其余数据位置不变,并输出该组数。 第九章 指 针 9.2 指针与一维数组 11 #include <stdio.h> void main() { int i, t, a[5], *p, *max; for(i=0; i<5; i++) scanf("%d", a+i); /* 输入数组 */ max=a; /* 使 max 指向数组的第1个元素 */ for(p=a+1; p<a+5; p++) if ( *max < *p) max = p; t=*a; *a=*max; *max=t; /* 最大值与a[0]交换 */ a 5 4 2 10 1 max p 【例9.3】输入一组数据存放在数组中,找出最大值,使它与数组中的第1个元素的值交换位置,其余数据位置不变,并输出该组数。 第九章 指 针 9.2 指针与一维数组 12 #include <stdio.h> void main() { int i, t, a[5], *p, *max; for(i=0; i<5; i++) scanf("%d", a+i); /* 输入数组 */ max=a; /* 使 max 指向数组的第1个元素 */ for(p=a+1; p<a+5; p++) if ( *max < *p) max = p; t=*a; *a=*max; *max=t; /* 最大值与a[0]交换 */ a 10 4 2 5 1 max p 【例9.3】输入一组数据存放在数组中,找出最大值,使它与数组中的第1个元素的值交换位置,其余数据位置不变,并输出该组数。 第九章 指 针 9.2 指针与一维数组 13 #include <stdio.h> void main() { int i, t, a[5], *p, *max; for(i=0; i<5; i++) scanf("%d", a+i); /* 输入数组 */ max=a; /* 使 max 指向数组的第1个元素 */ for(p=a+1; p<a+5; p++) if ( *max < *p) max = p; t=*a; *a=*max; *max=t; /* 最大值与a[0]交换 */ for(p=a;p<a+5;p++) /* p指向数组第1个元素*/ printf("%3d",*p); } a 10 4 2 5 1 p 【例9.3】输入一组数据存放在数组中,找出最大值,使它与数组中的第1个元素的值交换位置,其余数据位置不变,并输出该组数。 第九章 指 针 9.2 指针与一维数组 14 #include <stdio.h> void main() { int i, t, a[5], *p, *max; for(i=0; i<5; i++) scanf("%d", a+i); /* 输入数组 */ max=a; /* 使 max 指向数组的第1个元素 */ for(p=a+1; p<a+5; p++) if ( *max < *p) max = p; t=*a; *a=*max; *max=t; /* 最大值与a[0]交换 */ for(p=a;p<a+5;p++) /* p指向数组第1个元素*/ printf("%3d",*p); } a 10 4 2 5 1 p 【例9.3】输入一组数据存放在数组中,找出最大值,使它与数组中的第1个元素的值交换位置,其余数据位置不变,并输出该组数。 第九章 指 针 9.2 指针与一维数组 15 #include <stdio.h> void main() { int i, t, a[5], *p, *max; for(i=0; i<5; i++) scanf("%d", a+i); /* 输入数组 */ max=a; /* 使 max 指向数组的第1个元素 */ for(p=a+1; p<a+5; p++) if ( *max < *p) max = p; t=*a; *a=*max; *max=t; /* 最大值与a[0]交换 */ for(p=a;p<a+5;p++) /* p指向数组第1个元素*/ printf("%3d",*p); } a 10 4 2 5 1 p 【例9.3】输入一组数据存放在数组中,找出最大值,使它与数组中的第1个元素的值交换位置,其余数据位置不变,并输出该组数。 第九章 指 针 9.2 指针与一维数组 16 #include <stdio.h> void main() { int i, t, a[5], *p, *max; for(i=0; i<5; i++) scanf("%d", a+i); /* 输入数组 */ max=a; /* 使 max 指向数组的第1个元素 */ for(p=a+1; p<a+5; p++) if ( *max < *p) max = p; t=*a; *a=*max; *max=t; /* 最大值与a[0]交换 */ for(p=a;p<a+5;p++) /* p指向数组第1个元素*/ printf("%3d",*p); } a 10 4 2 5 1 p 【例9.3】输入一组数据存放在数组中,找出最大值,使它与数组中的第1个元素的值交换位置,其余数据位置不变,并输出该组数。 第九章 指 针 9.2 指针与一维数组 17 #include <stdio.h> void main() { int i, t, a[5], *p, *max; for(i=0; i<5; i++) scanf("%d", a+i); /* 输入数组 */ max=a; /* 使 max 指向数组的第1个元素 */ for(p=a+1; p<a+5; p++) if ( *max < *p) max = p; t=*a; *a=*max; *max=t; /* 最大值与a[0]交换 */ for(p=a;p<a+5;p++) /* p指向数组第1个元素*/ printf("%3d",*p); } a 10 4 2 5 1 p 【例9.3】输入一组数据存放在数组中,找出最大值,使它与数组中的第1个元素的值交换位置,其余数据位置不变,并输出该组数。 第九章 指 针 9.2 指针与一维数组 18 #include <stdio.h> void main() { int i, t, a[5], *p, *max; for(i=0; i<5; i++) scanf("%d", a+i); /* 输入数组 */ max=a; /* 使 max 指向数组的第1个元素 */ for(p=a+1; p<a+5; p++) if ( *max < *p) max = p; t=*a; *a=*max; *max=t; /* 最大值与a[0]交换 */ for(p=a;p<a+5;p++) /* p指向数组第1个元素*/ printf("%3d",*p); } a 10 4 2 5 1 p 【例9.3】输入一组数据存放在数组中,找出最大值,使它与数组中的第1个元素的值交换位置,其余数据位置不变,并输出该组数。 第九章 指 针 9.2 指针与一维数组 19 #include <stdio.h> void main() { int i, t, a[5], *p, *max; for(i=0; i<5; i++) scanf("%d", a+i); /* 输入数组 */ max=a; /* 使 max 指向数组的第1个元素 */ for(p=a+1; p<a+5; p++) if ( *max < *p) max = p; t=*a; *a=*max; *max=t; /* 最大值与a[0]交换 */ for(p=a;p<a+5;p++) /* p指向数组第1个元素*/ printf("%3d",*p); } a 10 4 2 5 1 p 【例9.3】输入一组数据存放在数组中,找出最大值,使它与数组中的第1个元素的值交换位置,其余数据位置不变,并输出该组数。 第九章 指 针 9.2 指针与一维数组 20 #include <stdio.h> void main() { int i,n,x; /* 函数声明 */ void insert(int *a, int x, int *m); int b[10]={2,3,6,9,21,30}; n=6; /*表示b中数据的个数*/ scanf("%d",&x); /*插入的数*/ insert(b, x, &n); /*函数调用*/ for(i=0; i<n; i++) printf("%d ",b[i]); printf(" "); } 【例9.5】编写函数,完成在有序数组中插入一个数,使数组仍然有序(升序)。 第九章 指 针 9.2 指针与一维数组 void insert(int *a, int x, int *m) { int i; for(i=*m-1;i>=0;i--) { if(x<*(a+i)) *(a+i+1)=*(a+i); else break; } *(a+i+1)=x; (*m)++; } 21 感谢观看 Thank you 22 $$

资源预览图

9.2 指针与一维数组(课件)-《C语言程序设计》同步教学(清华大学出版)
1
9.2 指针与一维数组(课件)-《C语言程序设计》同步教学(清华大学出版)
2
9.2 指针与一维数组(课件)-《C语言程序设计》同步教学(清华大学出版)
3
9.2 指针与一维数组(课件)-《C语言程序设计》同步教学(清华大学出版)
4
9.2 指针与一维数组(课件)-《C语言程序设计》同步教学(清华大学出版)
5
9.2 指针与一维数组(课件)-《C语言程序设计》同步教学(清华大学出版)
6
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。