第6章 指针—补充案例
更新时间:2023-10-04 18:03:01 阅读量: 综合文库 文档下载
- 机器人大乱斗第6章推荐度:
- 相关推荐
博学谷——让IT教学更简单,让IT学习更有效
第6章 指针
案例6-1 指针的概念 一、案例描述
1、 考核知识点
编号:00606001 名称:指针的概念 2、 练习目标
? 掌握指针的概念
3、 需求分析
在C语言中有一种特殊类型的变量,专门用于存放其他变量的地址,这种变量称为指针。为了加深读者对指针概念的理解,本案例将定义变量和指针变量,来演示指针的本质。 4、 设计思路(实现原理) 1)声明main()函数。
2)在main()函数中,定义两个变量和两个指针变量,指针变量用于存放变量的地址。
二、案例实现
编写程序,代码如下:
1 #include
int i; char c;
int * pi = &i; char * pc = &c;
三、案例总结
在该案例中,首先定义了一个整型变量i和一个字符变量c,然后使用“&”运算符分别获得变量i和c的内存地址,并分别使用一个整型指针变量和一个字符指针变量来记住地址。其中指针变量pi用于记住变量i的内存地址,而指针变量pc用于记住变量c的内存地址。下面通过一个图来演示,如图6-1所示。
1
博学谷——让IT教学更简单,让IT学习更有效
0x804a0200x804a024i:0c:0??0x804a0100x804a014 pi:0x804a020pc:0x804a024
图6-1 变量在内存中的存储结构
在图6-1中,编号0x804a020、0x804a024、0x804a010和0x804a014代表的都是内存中的地址,i代表的是一个整型变量,c代表的是字符变量,pi代表的是指向i的整型指针变量,pc代表的是指向c的字符指针变量。箭头代表了指针变量pi,pc和变量i,c之间的指向关系(即指针变量指向变量)。不难看出,指针变量实际上存储的并不是具体的值,而是变量的内存地址。
案例6-2 指针的运算 一、案例描述
1、 考核知识点
编号:00606002 名称:指针的运算
2、 练习目标
? 了解指针的常见运算符有哪些 ? 掌握指针的运算
3、 需求分析
指针作为一种特殊的数据类型同样也可以使用算术运算符、逻辑运算符等进行运算。为了加深初学者对指针运算的理解,本案例将演示常见指针运算符的用法。 4、 设计思路(实现原理) 1) 声明main()函数。
2) 在main()函数中定义指针变量,分别用指针运算符进行运算。
二、案例实现
编写程序,代码如下:
1 #include
int array[5] = {100, 110, 120, 130, 140}; int *p1 = &array[0]; int *p2 = &array[1]; int *p3 = &array[3];
printf(\
2
博学谷——让IT教学更简单,让IT学习更有效
9 10 11 12 13 14 15 16 17 18 19 20 21 }
printf(\printf(\printf(\
printf(\printf(\
printf(\++p2;
printf(\printf(\--p3;
printf(\getchar();
运行结果如图6-2所示。
图6-2 运行结果
三、案例总结
1、案例的第9行,通过取址运算符“&”获取元素array[0]的地址。 2、案例的第10行,通过取值运算符“*”获取地址&array[0]的值。
3、案例的第11-13行,通过指针变量与整数的加减运算,指针的值发生了变化。这里p1+1的值比p的值大4,而p1-1的值比p的值小4,是因为int类型的数据在内存中占用的就是4个字节,指针变量的加减运算实质上是其指针在内存中移动数据类型所占据的字节数。
4、案例的第14-19行,通过指针变量的自增自减运算,指针的值发生了变化。在指针变量p2和p3分别进行自增自减运算后,对其进行取值操作,它们的值都移动了一个元素:p2指向的是数组第2个元素的值,进行自增操作后输出第3个元素的值;p3指向的是数组第4个元素的值,进行自减操作后输出第3个元素的值。由此可以发现++p2与p2+1的操作效果一样的,--p3与p3-1的操作效果一样的,都是对内存地址移动一个数据类型大小的长度。
3
博学谷——让IT教学更简单,让IT学习更有效
案例6-3 指向变量的指针 一、案例描述
1、 考核知识点
编号:00606003
名称:指向变量的指针 2、 练习目标
? 掌握指针变量的使用
3、 需求分析
为了让初学者加深指针变量的理解,本案例将演示指针变量的使用及作为函数参数的使用。 4、 设计思路(实现原理)
1) 声明func()函数,用于改变指针指向变量的值。 2) 声明main()函数。
3) 在main()函数体内,定义变量和指针变量。
4) 打印变量和指针变量,调用func()函数,再次打印变量和指针变量。
二、案例实现
编写程序,代码如下:
1 #include
6 void main() 7 { 8 9 10 11 12 13 }
int num = 10;
printf(\func(&num);
printf(\getchar(); *p = 20;
运行结果如图6-3所示。
4
博学谷——让IT教学更简单,让IT学习更有效
图6-3 运行结果
三、案例总结
1、从图6-3中可以看出,在func()函数调用后变量num的值发生了变化。在程序中第2行代码定义一个func()函数,该函数的参数类型为指针类型。在main()函数中调用该函数时传入变量num的地址,对其取值运算后赋入新的值。
2、需要注意的是,func()函数必须写在main()函数的前面,否则需要在main()函数前声明func()函数。
案例6-4 指向一维数组元素的指针 一、案例描述
1、 考核知识点
编号:00606004
名称:指向一维数组元素的指针 2、 练习目标
? 了解指针在一维数组中的移动方式 ? 掌握用指针访问一维数组元素的方式
3、 需求分析
数组可以通过索引的方式来访问数组中的每个元素,也可以用一个指针来指向一维数组,通过指针的移动来依次访问数组中的元素。为了让初学者加深对指向一维数组元素的指针的理解,本案例将定义一个一维数组,并用指针依次访问数组元素。 4、 设计思路(实现原理) 1) 声明main()函数。
2) 在main()函数中,定义一个一维数组,并用指针依次访问数组元素。
二、案例实现
编写程序,代码如下:
1 #include
int array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int i, *p;
for (p = array, i = 0; i < 10; p++, i++) { }
printf(\
5
printf(\
正在阅读:
第6章 指针—补充案例10-04
第六章第二节 - 数列的应用01-03
matlab嵌入式代码生成04-25
影像练习01-22
苏教版九年级物理十一十二章测试07-21
盐城市二小2014—2015学年二年级下数学期末试卷(有答案)-(苏03-09
幼儿手工活动的内容及重要性11-26
蔬菜育苗技术(蔬菜种子类)12-26
糯东矿职工培训教师管理工作相关单位(责任人)工作职责、工作标准05-21
散文吧_经典散文诗歌,散文精选08-01
- 《江苏省环境水质(地表水)自动监测预警系统运行管理办法(试行)》
- 安乐死合法化辩论赛立论稿(浙大新生赛)
- 公共科目模拟试卷公务员考试资料
- 我国固定资产投资FAI对GDP的影响
- 大学生创新创业训练计划项目申请书大创项目申报表
- 完美版—单片机控制步进电机
- 2013资阳中考化学试题
- 18.两位数减一位数退位(397道)
- 工程量计算规则
- 二年级操行评语(下)
- 第3章 流程控制语句
- 浅基桥墩加固技术
- 课题研究的主要方法
- 5100软件说明书 - 图文
- 车间技术员年终总结
- 关于印发《中铁建工集团开展项目管理实验室活动方案》的通知
- 经典诵读结题报告
- 地下水动力学习题答案
- 2018年全国各地高考数学模拟试题平面解析几何试题汇编(含答案解
- 街道办事处主任2018年度述职述廉报告
- 指针
- 补充
- 案例
- 《物权法》用益物权制度评析
- 资金申请报告正文 - 图文
- 卫生局廉政风险点排查防控工作实施方案
- 基础护理学习题
- 粤妇字〔2010〕38号- 中国广州政府门户网站
- 带有修辞的诗句
- 接待工作的实施 - 教案
- 二年级数学下册第五单元《谁的眼睛亮观察物体》教学设计2青岛版六三制〔精品篇〕
- 2017高考化学大二轮复习第1部分知识整合专题2基本理论第8讲化学反应速率和化学平衡
- 采用DMA分区计量降低产销差的实践
- 2014高考英语二轮专题复习经典导学案(12)
- 高三试题先秦部分
- 2016-2022年中国电力电子元件市场运营监测研究报告 - 图文
- 装置开停工管理规定分解
- 人教版七年历史下册复习提纲知识点归纳精华
- 人民代表大会开幕式、第一次全体会议主持词
- 中国农业大学五级分制及绩点说明(英文)
- 水利工程安全生产知识手册(最新) - 图文
- 融资融券业务说明书V0.1 - 图文
- 《学生第二》读后感