C程序设计教案302课时——指针是什么指针变量.docx

上传人:lao****ou 文档编号:405717 上传时间:2023-10-24 格式:DOCX 页数:7 大小:43.75KB
下载 相关 举报
C程序设计教案302课时——指针是什么指针变量.docx_第1页
第1页 / 共7页
C程序设计教案302课时——指针是什么指针变量.docx_第2页
第2页 / 共7页
C程序设计教案302课时——指针是什么指针变量.docx_第3页
第3页 / 共7页
C程序设计教案302课时——指针是什么指针变量.docx_第4页
第4页 / 共7页
C程序设计教案302课时——指针是什么指针变量.docx_第5页
第5页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C程序设计教案302课时——指针是什么指针变量.docx》由会员分享,可在线阅读,更多相关《C程序设计教案302课时——指针是什么指针变量.docx(7页珍藏版)》请在第一文库网上搜索。

1、教案序号030周次授课形式新授授课章节名称指针是什么、指针变量教学目的了解指针和指针变量教学重点指针的理解教学难点指针的理解使用教具机房课外作业课后体会授课主要内容8.1指it是什么如果在程序中定义了一个变量,在对程序进行编译时,系统就会给该变量分配内存单元编译系统根据程序中定义的变量类型,分配一定长度的空间例如,VC+为整型变量分配4个字节,对单精度浮点型变量分配4个字节,对字符型变量分配1个字节8.1指针是什么内存区的每一个字节有一个编号,这就是“地址”,它相当于旅馆中的房间号。在地址所标识的内存单元中存放数据,这相当于旅馆房间中居住的旅客一样。由于通过地址能找到所需的变量单元,我们可以说

2、,地址指向该变量单元。将地址形象化地称为“指针”务必弄清楚存储单元的地址和存储单元的内容这两个概念的区别例如:为了表示将数值3送到变量中,可以有两种表达方法:(1)将3直接送到变量i所标识的单元中,例如:i=3;(2)将3送到变量1pointer所指向的单元(即变量i的存储单元),例如:*i_pointer=3;其中*1pointer表示1pointer指向的对象指向就是通过地址来体现的假设1pointer中的值是变量i的地址(2000),这样就在1pointer和变量i之间建立起一种联系,即通过1pointer能知道i的地址,从而找到变量i的内存单元由于通过地址能找到所需的变量单元,因此说,

3、地址指向该变量单元将地址形象化地称为“指针”。意思是通过它能找到以它为地址的内存单元一个变量的地址称为该变量的“指针”例如,地址2000是变量i的指针如果有一个变量专门用来存放另一变量的地址(即指针),则它称为“指针变量” 1pointer就是一个指针变量。指针变量就是地址变量,用来存放地址的变量,指if变量的值是地址(即指针) “指针”和“指针变量”是不同的概念可以说变量i的指针是2000,而不能说i的指针变量是2000 指针是一个地址,而指针变量是存放地址的变量 8.2指针变量8.2.1 使用指针变量的例子8.2.2 怎样定义指针变量8.2.3 怎样引用指针变量8.2.4 指针变量作为函数

4、参数 821使用指针变量的例子例8.1通过指针变量访问整型变量。解题思路:先定义2个整型变量,再定义2个指针变量,分别指向这两个整型变量,通过访问指针变量,可以找到它们所指向的变量,从而得到这些变量的值。#inc1udeintmain()inta=100,b=10;int*pointer1,*pointer2;pointer_1=&a;pointer_2=&b;printf(t4a=%d,b=%dn,a,b);printf(4t*pointer_1=%d,*pointer_2=%dn,*pointer1,*pointer2);return0;)#inc1udeintnain()inta=100

5、,b=10;int*pointer_1,*pointer_2;pointer_1=&a;pointer_2=&b;printf(tta=%d,b=%dn,a,b);printf(u*pointer_1=%d,*pointer_2=%dnM,*pointer_1,*pointer_2);return0; 8.2.2怎样定义指针变量 定义指针变量的一般形式为:类型*指针变量名;如:int*pointer_1,*pointer_2; Et是为指针变量指定的“基类型” 基类型指定指针变量可指向的变量类型 如pointer可以指向整型变量,但不能指向浮点型变量 8,2.2怎样定义指针变量下面都是合法的定

6、义和初始化:f1oat*pointer_3;char*pointer_4;inta,b;int*pointer_1=&a,*pointer_2=&b; 8.2.3怎样引用指针变量在引用指针变量时,可能有三种情况, 给指针变量赋值。如:P=&a; 引用指针变量指向的变量。如有p=&a;*p=1;则执行printfCt%d-,*p);将输出1 引用指针变量的值。如:printfr%o,p);8.2.3怎样引用指针变量要熟练掌握两个有关的运算符:(1)&取地址运算符。&a是变量a的地址(2)*指针运算符(“间接访问”运算符)如果:P指向变量a,则*p就代表a,k=*p;(把a的值赋给k)*p=1;(

7、把1赋给a)例8.2输入a和b两个整数,按先大后小的顺序输出a和b解题思路:用指针方法来处理这个问题。不交换整型变量的值,而是交换两个指针变量的值。#inc1udeintnain()int*p1,*p2,*pi,b;Printf(integernumbers:*);scanf(w%d,%dw,a,b);p1=&a;p2=&b;if(ab)p=p1;p1=p2;p2=p;printf(tta=%d,b=%dn,a,b);printf(tt%d,%dn,*p1,*p2);return0;)#inc1udeintnain()int*p1,*p2,*pi,b;printf(4tintegernumbe

8、rs:*);scanf(w%d,%dw,a,b);p1=&a;p2=&b;if(ab)p=p1;p1=p2;p2=p;printf(tta=%d,b=%dn,a,b);printf(tt%d,%dn,*p1,*p2);return0;)#inc1udeintnain()int*p1,*p2,*pi,b;printf(4tintegernumbers:*);scanf(w%d,%dw,a,b);p1=&a;p2=&b;if(ab)p=p1;p1=p2;p2=p;printf(tta=%d,b=%dn,a,b);printf(tt%d,%dn,*p1,*p2);return0;)#inc1udei

9、ntnain()int*p1,*p2,*pi,b;printf(t4integernumbers:*);scanf(w%d,%dw,a,b);p1=&a;p2=&b;if(a8.2.4指针变量作为函数参数例8.3题目要求同例8.2,即对输入的两个整数按大小顺序输出。现用函数处理,而且用指针类型的数据作函数参数。解题思路:定义一个函数swap,将指向两个整型变量的指针变量作为实参传递给swap函数的形参指针变量,在函数中通过指针实现交换两个变量的值。#inc1udeintmain()voidswap(int*p1,int*p2);inta,b;int*pointer_1,*pointer_2;p

10、rintf(,p1easeenteraandb:H);scanf(t4%d,%d,a,b);pointer_1=&a;pointer_2=&b;if(ab)swap(pointer_1,pointer_2);printf(umax=%d,min=%dn,a,b);return0;)voidswap(int*p1,int*p2)inttemp;temp=*p1;*p1=*p2;*p2=temp;voidswap(int*p1,int*p2)inttemp;temp=*p1;*p1=*p2;*p2=temp;#inc1udeintmain()if(ab)swap(a,b);printf(tmax=

11、%d,min=%dn,a,b);return0;Ivoidswap(intx,ity)inttemp;temp=x;x=y;y=temp;)如果想通过函数调用得到n个要改变的值:在主调函数中设n个变量,用n个指针变量指向它们设计一个函数,有n个指针形参。在这个函数中改变这n个形参的值在主调函数中调用这个函数,在调用时将这n个指针变量作实参,将它们的地址传给该函数的形参在执行该函数的过程中,通过形参指针变量,改变它们所指向的n个变量的值主调函数中就可以使用这些改变了值的变量例8.4对输入的两个整数按大小顺序输出。解题思路:尝试调用SWaP函数来实现题目要求。在函数中改变形参(指针变量)的值,希望

12、能由此改变实参(指针变量)的值#inc1udeintnain()voidswap(int*p1,int*p2);inta,b;int*pointer_1,*pointer_2;scanf(,%d,%d,ab);pointer_1=&a;pointer_2=&b;if(ab)swap(pointer_1,pointer_2);pnntf(,max=%d,min=%dn,a,b);return0;)注意:函数的调用可以(而且只可以)得到一个返回值(即函数值),而使用指针变量作参数,可以得到多个变化了的值。如果不用指针变量是难以做到这一点的。要善于利用指针法。例8.5输入3个整数a,b,c,要求按由

13、大到小的顺序将它们输出。用函数实现。解题思路:采用例8.3的方法在函数中改变这3个变量的值。用swap函数交换两个变量的值,用exchange函数改变这3个变量的值。#inc1udeintnain()voidexchange(int*q1,int*q2,int*q3);inta,b,c,*p1,*p2,*p3;SCanf(d,%d,%d”,&a,&b,&c);p1=&a;p2=&b;p3=&c;exchange(p1,p2,p3);printf(tt%d,%d,%dn,a,b,c);returnO;voidexchange(int*q1,int*q2,int*q3)voidswap(int*pt1,int*pt2);if(*q1*q2)swap(q1,q2);if(*q1*q3)swap(q1,q3);if(*q2*q3)swap(q2,q3);voidswap(int*pt1,int*pt2)inttemp;temp=*pt1;*pt1=*pt2;*pt2=temp;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 汇报材料

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服