2022年《C语言程序设计》教案第二章基本数据类型和表达式.docx
《2022年《C语言程序设计》教案第二章基本数据类型和表达式.docx》由会员分享,可在线阅读,更多相关《2022年《C语言程序设计》教案第二章基本数据类型和表达式.docx(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -C 语言程序设计课程教案表授课题目3)课时支配2 其次章基本数据类型和表达式(授课时间教学目的和要求1把握:指针运算 2明白:位运算符及逗号运算符 教学内容 1基本内容: (1)指针运算( 2)其他运算符及表达式 2重点:指针变量的定义与应用、指针运算 3难点:指针运算 讲课进程和时间安排 、地址与指针的概念(15 分钟)(1)变量的指针与变量的值1地址 :在运算机中, 把内存区划分为一个一个的储备单元,它们都有一个编号,这个编号就是内存地址板书上面这个图,以便使同学更好地懂得内存地址;每个单元为一个字节 (
2、位),如有定义: char c=A; int a=3; 就所占内存情形如下:留意: c 和 a 的地址可能相邻,也可能不相邻,是由系统安排的,我们不用关怀;【例 2.11】输出变量的值和变量的指针 地址 ;main int a=10,b=20 ;细心整理归纳 精选学习资料 char c=X ,d=Y ; 第 1 页,共 8 页 - - - - - - - - - - - - - - - - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -float e=5.6,f=-2.8 ;printf “ %d,%dn ” ,a,b;p
3、rintf “ %c,%cn ” ,c,d;printf “ %f,%fn ” ,e,f;printf “ %p,%p,%p,%p,%p,%pn ” ,a,b,c,d,e,f; 输出结果 : 12,20 通过上述例题,使同学区分变量的值和变量地址(指针)两个专业术语;(2)变量的指针和指针变量 C 语言中一个变量所安排的内存空间首字节地址,称为该变量的指针 地址 ;一个指针 变量的值是存放另一个变量的地址;例如:int a=10,*p; p=&a; p,如图 2-9 所示;将变量 a 的地址赋给指针变量2、指针变量的定义与引用(20 分钟)(1)指针变量的定义指针变量的定义格式:数据类型 *;
4、说明: “* ”表示该变量为一个指针变量;为指针变量名,取名规章与一般变量 取名规章相同;细心整理归纳 精选学习资料 例 :int *p1 ;/* 定义 p1 为指向整型变量的指针变量*/ 第 2 页,共 8 页 char *c1;/* 定义 c1 为指向字符型变量的指针变量*/ - - - - - - - - - - - - - - - - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -float *f1 ;/* 定义 f1 为指向实型变量的指针变量*/ 以上定义的3 个指针变量,其中,p1 可以存放整型变量的地址;c1
5、 存放字符型变量的地址; f1 存放实型变量的地址;(2)与指针有关的两个运算1) & 取地址运算符作用:取变量内存单元的地址;取变量地址的运算符“ &”在前面输入语句时已经使用过;如: scanf “ %d” ,&a;/*向变量 a 的地址中输入数据 */ 一个指针变量只能指向其定义中所说明的数据类型;例: int a,*p1;char c,*c1; p1=&a ;/* 把变量 a 的地址赋给指针变量p1 */ c 的指针;c1=&c; /* 把变量 c 的地址赋给指针变量c1 */ 以上定义的p1、c1 两个指针变量,p1 的值是变量a 的指针; c1 的值是变量2) * 取内容运算符作用
6、:取指针变量所指变量的值,又称间接拜访运算符考虑:储备单元的地址与变量间有什么样的关系 . 看下面例子 :用现实生活中的例子使同学更好地懂得上述问题,并找到两者之间联系;主任办公室 书记办公室 教学秘书办公室201 202 203 此处房间相当于储备单元、房间号相当于地址、“ 主任办公室 ” 等相当于变量名;因此,对储备单元的拜访,既可以通过 变量名 来实现, 也可以通过地址来拜访;结论:对一个变量的拜访(拜访是指存、取其值或赋值等操作)有两种方式:直接拜访间接拜访直接拜访:即直接通过变量名所对应的地址拜访数据;例: main int a=5;printf“ a=%d n” ,a ; 运行结果
7、: a=5 通过变量名 a 与地址的对应关系,找到 a 的地址,然后从地址中取出数据 5 输出间接拜访: 即通过一个指针变量来拜访数据;间接拜访即先把某一变量的地址储存在一个指针变量中, 如对该变量的数据进行操作,先要找到储存该变量地址的指针变量,然后从指针变量中取出储存的地址,再从地址中取出数据进行运算;例:main int a=10,*p; p=&a; /* 将变量 a 的地址赋给指针变量 p */ printf“ a=%d n” ,*p ; /* *p 是取出 p 所指向的变量 a 的地址 65500 中的值 */ 运行结果: a=10 (3)指针变量的定义与引用细心整理归纳 精选学习资
8、料 指针变量的初始化的一般格式如下:数据类型*=& 变量名; 第 3 页,共 8 页 - - - - - - - - - - - - - - - - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -例: int a,*p=&a ;指针变量初始化的过程是:系统根据所定义的类型,在内存中为变量a 与指针变量p安排储备空间;同时,将变量a的地址送给指针变量p 中;在上面的定义中,p 指向 a;定义指针变量的目的是,为了通过指针变量去引用(拜访)内存单元;当一个指针变量得到一个变量的地址后,就可以用指针对变量进行操作;【例 2.12
9、】用两种方式输出变量的值;main int a=10,b=20; int *p1=&a ;/* 指针变量的初始化 */ int *p2=&b ;printf“a=%dn”,a,b;printf“*p1=%d,*p2=%d*p1,*p2; 运行:a=10,b=20 *p1=10,*p2=20 分析结果:第一个打印语句 printf“ a=%d n” ,a,b;是用直接方式输出;其次个printf“*p1=%d,*p2=%d *p1,*p2;是用间接拜访方式输出,其执行过程是:a 的地址赋给指针变量 p1,b 的地址赋给指针变量p2;p1 指向 a,p2 指向 b如图 2-11 所示 ;*p1 和
10、*p2 是分别从其内存单元中取出的值65500 和 65502;然后,从地址65500、 65502 中分别取出值10、 20 输出;以上说明:当 p1=&a; 就 p1 的值是 a 的地址; *p1 是 a 的值,即 *p1 与 a 等价;对某一个变量进行运算,可以用两种方法来进行 :用变量名;用指针运算符“ *”,取指针变量所指变量的值;【例 2.13】分析程序运行结果;main int a=10,b=8,c,d,*p1,*p2 ;p1=&a;p2=&b ;c=*p1+*p2 ;d=*p1-*p2 ;Printf“a+b=%d,c;Printf“ an”,d; 运行结果: a+b=18 a
11、-b=2 说明: p1 的值是 a 的地址, *p1 是取 p1 所指变量的值,即a 的值,所以 *p1 与 a 等价;同理, *p2 与 b 等价;所以有:c=*p1+*p2 与 c=a+b 等价; c=*p1-*p2 与 c=a-b 等价;3、指针运算(20 分钟)指针运算就是地址运算;(1)指针的算术运算1指针加、减整数的运算细心整理归纳 精选学习资料 设: p 为指针变量, n 为正整数;就表达式p+n,为 p 的当前值后面第n 项数据的地址; 第 4 页,共 8 页 - - - - - - - - - - - - - - - - - - - - - - - - 名师归纳总结 精品学习
12、资料 - - - - - - - - - - - - - - -p+n 与 p 之间有多少个单元,与 p 所指向的数据类型有关;如 int 型变量在内存占2 个字节,如 p 为指向 int 型变量, p+, 指针自动向后移动 2 个字节 ,p+2 就向后移动 4 个字节;同理,表达式 p-n 为 p 的当前值前移第 n 项数据的地址,-p,就 p 前移动 2 个字节;因此, p+n 是按数据类型储备单元比例增大,而不是直接加 n;所以有:int a,*p1; p1=&a; char c,*pc;pc=&c; float f,*fp;fp=&f; p1+2; /*p1 向后移动 4 个字节 */
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计 2022 语言程序设计 教案 第二 基本 数据类型 表达式
限制150内