第9章_指针课件.ppt
《第9章_指针课件.ppt》由会员分享,可在线阅读,更多相关《第9章_指针课件.ppt(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第9章_指针ppt课件(全)第第9章章 指指 针针第9章_指针ppt课件(全)第第9章章 指指 针针(pointer)9.1 指针的基本概念指针的基本概念9.2 指针与一维数组指针与一维数组9.3 指针与二维数组指针与二维数组9.4 指针与字符串指针与字符串9.5 指针与函数指针与函数9.6 指针数组与多级指针指针数组与多级指针第9章_指针ppt课件(全)9.1 指针的基本概念指针的基本概念#includevoid main() int a=10; float x=20.5; 内存中每个字节有一个编号-地址9.1.1 变量的地址及指针变量的地址及指针地址也称为指针第9章_指针ppt课件(全)
2、8.1.2 指针变量指针变量1指针变量的定义指针变量的定义int a; int *p=&a; 或或 int a,*pa=&a;2指针变量的引用指针变量的引用(1) &:取地址运算符取地址运算符(2) *:指针运算符指针运算符(或称间或称间接访问运算符接访问运算符)例如:例如: int a=6, *pa; .2000200420062005整型变量 a6指针变量 pa200120022003例如:例如: int a=6, *pa; pa=&a; 2000例如:例如: int a=6, *pa; pa=&a; *pa=28; 28第9章_指针ppt课件(全)【例【例9.0】使两个指针变量交换指向。
3、】使两个指针变量交换指向。#include #include void main()void main() int a=10,b=20, int a=10,b=20,* *p1=&a,p1=&a,* *p2=&b,p2=&b,* *p p; ;printf(a=printf(a=%d%d,b=,b=%d%d, ,* *p1p1=%d=%d, ,* *p2p2=%d=%dn,a,b,n,a,b,* *p1,p1,* *p2);p2); p=p1; p1=p2; p2=p; p=p1; p1=p2; p2=p;printf(aprintf(a=%d,=%d,b=b=%d%d, ,* *p1p1=%
4、d=%d, ,* *p2p2=%dn=%dn,a,b,a,b,* *p1,p1,* *p2);p2); 运行结果如下:运行结果如下:a=10,b=20,*p1=10,*p2=20a=10,b=20,*p1=20,*p2=10第9章_指针ppt课件(全)3使用指针应注意的几种情况使用指针应注意的几种情况(1) 在指针变量中只能存储地址在指针变量中只能存储地址,例如:,例如: int a,*p,*q; p=2000; /* 不正确不正确 */ q=&a; /* 正确正确 */(2)语句语句“int a,*p=&a;” 与与“int a,*p; p=&a;” 是等价的是等价的 但但“int a,*p
5、; *p=&a;”中的赋值语句是错误的。中的赋值语句是错误的。(3) 悬挂指针悬挂指针 指针变量的值不确定的指针称为悬挂指针。指针变量的值不确定的指针称为悬挂指针。如:如:int *p; *p=56;第9章_指针ppt课件(全)9.1.3 指针运算指针运算1指针之间的赋值运算指针之间的赋值运算2指针与整数的加、减指针与整数的加、减运算运算3指针相减运算指针相减运算4指针之间作关系运算指针之间作关系运算例如:例如:float x,*p1,*p2=&x;p1=p2;例如:例如:int a4=10,11,12,13,*pa;pa=a; pa=pa+1; 如果两个指针指向如果两个指针指向同一数组同一数
6、组的元素上,则两指针相减,的元素上,则两指针相减,其其绝对值绝对值的物理意义是两指的物理意义是两指针间相距多少个元素。针间相距多少个元素。指针间作关系运算,可以判指针间作关系运算,可以判断指针是否指向断指针是否指向同一数组同一数组或或同一元素同一元素上。上。第9章_指针ppt课件(全)9.1.4 指针作为函数的参数指针作为函数的参数【例【例9.1】 编写函数编写函数swap1,交换两个变量的值。交换两个变量的值。#include void main() float a, b; void swap1(float *x, float *y); scanf(%f%f,&a,&b); swap1(&a
7、,&b); printf(a=%.1f b=%.1fn,a,b);void swap1(float *x,float *y) float t; t=*x; *x=*y; *y=t; 程序运行情况:程序运行情况:3.4 5.6 a=5.6 b=3.4第9章_指针ppt课件(全)9.2 指针与一维数组指针与一维数组9.2.1 一维数组元素的表示一维数组元素的表示1下标表示法和指针表示法下标表示法和指针表示法 int a5=10,11,12,55,14; 下标表示法下标表示法:a i 指针表示法指针表示法:*(a+i)第9章_指针ppt课件(全) 【例【例9.补充】查看数组元素的补充】查看数组元素的
8、地址地址及数组元素的及数组元素的值值。#include void main() int i,a4=10,11,12,13; for(i=0;i4;i+) printf(%x,%dn,a+i, *(a+i);运行结果:运行结果:ffd2, 10ffd4, 11ffd6, 12ffd8, 13第9章_指针ppt课件(全)2用指针变量引用一维数组元素用指针变量引用一维数组元素【例【例9.2】用指针变量给数组赋值,输出各元素值及其和。】用指针变量给数组赋值,输出各元素值及其和。#include void main() int a10, i, j, s; int *p; for(p=a; pa+10;
9、p+) scanf(%d, p); p=a; for(s=0,i=0;i10;i+) s+=*(p+i); for(i=0;i10;i+) printf(%3d, pi); printf(ns=%d,s); i: 0 1 2 3 4 5 6789ap&ais+=aiai第9章_指针ppt课件(全)【例【例9.3】输入一组数据存放在数组中,找出最大值,使它与数】输入一组数据存放在数组中,找出最大值,使它与数组中的第组中的第1个元素的值交换位置,其余数据位置不变,并输个元素的值交换位置,其余数据位置不变,并输出该组数。出该组数。#include void main() int i,t,a5,*p,
10、*max; for(i=0;i5;i+) scanf(%d,a+i); max=a; for(p=a+1; pa+5; p+) if (*max*p) max=p; a542101max p第9章_指针ppt课件(全)【例【例9.3】输入一组数据存放在数组中,找出最大值,使它与数】输入一组数据存放在数组中,找出最大值,使它与数组中的第组中的第1个元素的值交换位置,其余数据位置不变,并输个元素的值交换位置,其余数据位置不变,并输出该组数。出该组数。#include void main() int i,t,a5,*p,*max; for(i=0;i5;i+) scanf(%d,a+i); max=
11、a; for(p=a+1; pa+5; p+) if (*max*p) max=p; a542101max p第9章_指针ppt课件(全)【例【例9.3】输入一组数据存放在数组中,找出最大值,使它与数】输入一组数据存放在数组中,找出最大值,使它与数组中的第组中的第1个元素的值交换位置,其余数据位置不变,并输个元素的值交换位置,其余数据位置不变,并输出该组数。出该组数。#include void main() int i,t,a5,*p,*max; for(i=0;i5;i+) scanf(%d,a+i); max=a; for(p=a+1; pa+5; p+) if (*max*p) max=
12、p; a542101max p第9章_指针ppt课件(全)【例【例9.3】输入一组数据存放在数组中,找出最大值,使它与数】输入一组数据存放在数组中,找出最大值,使它与数组中的第组中的第1个元素的值交换位置,其余数据位置不变,并输个元素的值交换位置,其余数据位置不变,并输出该组数。出该组数。#include void main() int i,t,a5,*p,*max; for(i=0;i5;i+) scanf(%d,a+i); max=a; for(p=a+1; pa+5; p+) if (*max*p) max=p; a542101max p第9章_指针ppt课件(全)【例【例9.3】输入一
13、组数据存放在数组中,找出最大值,使它与数】输入一组数据存放在数组中,找出最大值,使它与数组中的第组中的第1个元素的值交换位置,其余数据位置不变,并输个元素的值交换位置,其余数据位置不变,并输出该组数。出该组数。#include void main() int i,t,a5,*p,*max; for(i=0;i5;i+) scanf(%d,a+i); max=a; for(p=a+1; pa+5; p+) if (*max*p) max=p; a542101max p第9章_指针ppt课件(全)【例【例9.3】输入一组数据存放在数组中,找出最大值,使它与数】输入一组数据存放在数组中,找出最大值,
14、使它与数组中的第组中的第1个元素的值交换位置,其余数据位置不变,并输个元素的值交换位置,其余数据位置不变,并输出该组数。出该组数。#include void main() int i,t,a5,*p,*max; for(i=0;i5;i+) scanf(%d,a+i); max=a; for(p=a+1; pa+5; p+) if (*max*p) max=p; t=*a; *a=*max;*max=t;a542101max p第9章_指针ppt课件(全)【例【例9.3】输入一组数据存放在数组中,找出最大值,使它与数】输入一组数据存放在数组中,找出最大值,使它与数组中的第组中的第1个元素的值交
15、换位置,其余数据位置不变,并输个元素的值交换位置,其余数据位置不变,并输出该组数。出该组数。#include void main() int i,t,a5,*p,*max; for(i=0;i5;i+) scanf(%d,a+i); max=a; for(p=a+1; pa+5; p+) if (*max*p) max=p; t=*a; *a=*max;*max=t;a 104251max p第9章_指针ppt课件(全)【例【例9.3】输入一组数据存放在数组中,找出最大值,使它与数】输入一组数据存放在数组中,找出最大值,使它与数组中的第组中的第1个元素的值交换位置,其余数据位置不变,并输个元素
16、的值交换位置,其余数据位置不变,并输出该组数。出该组数。#include void main() int i,t,a5,*p,*max; for(i=0;i5;i+) scanf(%d,a+i); max=a; for(p=a+1; pa+5; p+) if (*max*p) max=p; t=*a; *a=*max;*max=t; printf(%3d,*p);a 104251 p第9章_指针ppt课件(全)【例【例9.3】输入一组数据存放在数组中,找出最大值,使它与数】输入一组数据存放在数组中,找出最大值,使它与数组中的第组中的第1个元素的值交换位置,其余数据位置不变,并输个元素的值交换位
17、置,其余数据位置不变,并输出该组数。出该组数。#include void main() int i,t,a5,*p,*max; for(i=0;i5;i+) scanf(%d,a+i); max=a; for(p=a+1; pa+5; p+) if (*max*p) max=p; t=*a; *a=*max;*max=t; printf(%3d,*p);a 104251 p第9章_指针ppt课件(全)【例【例9.3】输入一组数据存放在数组中,找出最大值,使它与数】输入一组数据存放在数组中,找出最大值,使它与数组中的第组中的第1个元素的值交换位置,其余数据位置不变,并输个元素的值交换位置,其余数
18、据位置不变,并输出该组数。出该组数。#include void main() int i,t,a5,*p,*max; for(i=0;i5;i+) scanf(%d,a+i); max=a; for(p=a+1; pa+5; p+) if (*max*p) max=p; t=*a; *a=*max;*max=t; printf(%3d,*p);a 104251 p第9章_指针ppt课件(全)【例【例9.3】输入一组数据存放在数组中,找出最大值,使它与数】输入一组数据存放在数组中,找出最大值,使它与数组中的第组中的第1个元素的值交换位置,其余数据位置不变,并输个元素的值交换位置,其余数据位置不变
19、,并输出该组数。出该组数。#include void main() int i,t,a5,*p,*max; for(i=0;i5;i+) scanf(%d,a+i); max=a; for(p=a+1; pa+5; p+) if (*max*p) max=p; t=*a; *a=*max;*max=t; printf(%3d,*p);a 104251 p第9章_指针ppt课件(全)【例【例9.3】输入一组数据存放在数组中,找出最大值,使它与数】输入一组数据存放在数组中,找出最大值,使它与数组中的第组中的第1个元素的值交换位置,其余数据位置不变,并输个元素的值交换位置,其余数据位置不变,并输出该
20、组数。出该组数。#include void main() int i,t,a5,*p,*max; for(i=0;i5;i+) scanf(%d,a+i); max=a; for(p=a+1; pa+5; p+) if (*max*p) max=p; t=*a; *a=*max;*max=t; printf(%3d,*p);a 104251 p第9章_指针ppt课件(全)【例【例9.3】输入一组数据存放在数组中,找出最大值,使它与数】输入一组数据存放在数组中,找出最大值,使它与数组中的第组中的第1个元素的值交换位置,其余数据位置不变,并输个元素的值交换位置,其余数据位置不变,并输出该组数。出该
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 指针 课件
限制150内