C语言指针教学重点和难点问题浅析
时间:2022-05-05 17:15:02 浏览次数:次
摘 要: 随着互联网技术的飞速发展,计算机教学对基础课程的要求越来越高。本文以《C语言程序设计》中指针教学为对象,通过探讨概念、种类和用法,详细讲解了二维数组、行指针、二级指针、指针数组之间的区别和关系。实践证明,对于指针重点难点的分析,有利于学生C语言知识体系的建立。
关键词: C语言;指针;计算机教学;重难点
中图分类号: TP3 文献标识码: A DOI:10.3969/j.issn.1003-6970.2019.06.045
本文著录格式:杨阳. C语言指针教学重点和难点问题浅析[J]. 软件,2019,40(6):197199
【Abstract】: With the rapid development of internet technique, more computer teaching requirements for basic courses are needed. This article focusing on pointer teaching of《C Language Programming Design》, exploring concepts, types and usage, gives a detailed explaination of the differences and relations among two-dimensional array, row pointer, two-level pointer and pointer array. The practice shows the analysis of key and difficult points of pointer is beneficial for the establishment of students’ C language knowledge system.
【Key words】: C language; Pointer; Computer teaching; Key and difficult points
0 引言
随着互联网技术的飞速发展,计算机应用渗透到社会生活中的方方面面,性能优良、用户体验好的软件应用成为互联网行业产品准入标准,人工智能的兴起,促进了软件向智能化转变。这些市场需求的变化,要求计算机专业人才除了有全面的技术素养,更要重视能力和基础。这主要体现在,通过基础知识的掌握,能够快速进行学习领域环境的迁移,能够解决实际生产中遇到的各种问题。《C语言程序设计》是软件工程学科的专业基础课程,是其他程序设计语言教学(如C++/Java)的先行課程,对于理解计算机系统原理、编译技术起着重要作用。通过《C语言程序设计》的学习,学生能够掌握面向过程编程的基本范式,理解程序运行的基本原理,进而快速过渡到面向对象程序设计。总之,C语言是计算机专业基础教学的重要内容[1],对于提高程序开发素养具有重要意义。
在《C语言程序设计》教学中,指针是贯穿整个课程的核心内容[2],也是学生学习的重点和难 点。本文通过对指针用法的解释和剖析,建立清晰的认知概念,促进学生对于各类指针用法的熟练 掌握。
1 C语言指针教学重难点概述
指针是C语言中非常重要的概念,通过对指针的学习,可以使学生了解C编译系统的寻址原理[3],增强对变量名和变量地址之间内在关系的逻辑认 识[4],并灵活操作数组、字符串和函数间参数传递。正因为指针概念贯穿了多个知识点,使用起来“变化多端”,给学生掌握带来不同程度的困难。本文将通过讨论C指针的若干重难点,如指针和地址的关系、指针与数组以及二维数组、行指针、二级指针、指针数组之间的关系等,较为全面的阐述指针的多种用法,使C语言教学更加清晰简洁。
2 C语言指针若干问题探讨
2.1 指针和地址
关于指针和地址之间的关系,不同的资料给出了各自的解释。有解释为“指针就是内存地址”[5],有将指针理解为一种特殊的变量,这种变量专门用来存放其它变量的内存地址。本文主要采用后一种理解,并不加区分“指针”与“指针变量”。对于32位操作系统而言,任一变量的地址是4个字节,不管指针变量的基类型是什么,指针变量自身都占用4个字节。指针基类型还主要用来确定指针每移动一个逻辑单位所跨越的字节数:基类型为int的指针每加1向后移动4个字节,基类型为double的指针每加1向后移动8个字节,这就意味着不同基类型的指针不能混合使用。
2.2 指针和数组
2.3 二维数组、行指针、二级指针、指针数组之间关系
对于二维数组作为函数实参,那么形参的类型是fun (double (*a)[N]),即以一个行指针作为形参接受二维数组,二维数组名可以赋值给行指针。
对于指针数组(double *arr[N])作为函数实参,那么形参的类型是fun ( double **a),即以一个指向指针的指针(二级指针)作为形参接受指针数组,指针数组名可以赋值给二级指针。
二维数组、行指针、二级指针、指针数组之间关系的示例如下所示:
void main(){
int arr[3][4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11, 12}};
int(*hanP)[4]; //行指针
int **twoP; //二级指针
int *p[3]; //指针数组
//指针数组的用法
for (int i = 0; i < 3; i++) {
p[i] = arr[i];
}
//行指针用法
hanP = arr;
//二级指针用法
twoP = p;
printf("%d ", hanP[1][2]);//7
printf("%d ", p[1][2]); //7
printf("%d ", twoP[1][2]);//7
}
在上面的示例中,首先声明定义了一个二维数组arr,行指针hanP,二级指针twoP,以及指针数组p。对于指针数组p而言,每一个元素都是一个普通指针,所以在对指针数组进行初始化的时候,其每一个元素都用一个列指针arr[i]来赋值,表示对应二维数组中某一行的起始元素地址。对于行指针hanP而言,直接用数组名arr进行赋值,因为数组名arr本身也是行指针类型。对于二级指针twoP而言,它表示指向指针的指针,它存储的内容是另一个一级指针的地址,这与指针数组名p相对应,所以将p赋值给twoP。
如上所示,二级指针twoP、twoP+1、twoP+2、twoP+3分别指向一个一级指针p[i],即二级指针采用指针法*(twoP+i)或下标法twoP[i]可以获取指针数组中每个元素p[i]的值。在指针数组中,通过p[1][2](或 *(*(p+1)+2) )能够获取到二维数组中第1行、第2列(从0开始计数)的元素7,那么,根据前面的分析,twoP[1](或 *(*(twoP+1)+2) )也能够获取到二维数组中第1行、第2列的元素7。
對于行指针与二级指针的关系,首先将行指针通过*运算转化为列指针,然后再进行赋值操作:*twoP = *hanP。
综上讨论所述二维数组、行指针、二级指针、指针数组之间的相互关系,可以发现,不同种类的指针代表不同的寻址方式,或者说不同的地址计算方法,它们之间可以按规则进行转化。
3 结束语
基于软件专业课程标准的新要求,探讨了《C语言程序设计》这门课中关于指针部分的重点和难点。通过对相关内容的介绍,特别是指针与地址、指针与数组以及二维数组、行指针、二级指针、指针数组之间关系的讨论,梳理了C语言课程教学中的知识要点,有利于教师的授课和学生的学习,对教育教学有一定的促进作用。
参考文献
[1] 李晓东, 魏惠茹, 董振华. 项目驱动教学法在计算机程序设计语言课中的探索[J]. 软件, 2015, 36(4): 107-109.
[2] 赖晓燕, 赵浩, 程铃钫. 基于CS2013的程序设计基础课程建设[J]. 软件, 2018, 39(6): 16-19.
[3] 田淑清. 全国计算机等级考试二级教程——C语言程序设计(2018年版)[M]. 北京: 高等教育出版社, 2017: 98.
[4] 谭浩强. C程序设计[M]. 4. 北京: 清华大学出版社, 2010: 220.
[5] 丁留海. C语言指针的底层原理[J]. 电子技术与软件工程, 2016(21):257.
[6] 孔浩. C指针编程之道[M]. 北京: 人民邮电出版社, 2011: 28.
[7] 张峻. 论C语言中指针和数组关系[J]. 科技资讯, 2009(17): 28-29.
推荐访问: 浅析 难点 指针 重点 语言[C语言指针教学重点和难点问题浅析]相关文章
- 经验材料:浅析如何在解决“五个干”问题中将公安队伍教育整顿推向深入
- 浅析《品德与社会》课教学中渗透情感教育的有效措施
- 浅析多媒体技术在初中思想品德课中的运用
- 浅析高中语文课堂情境教学设计优化研究
- 综合实践活动课程资源生活化浅析
- 浅析数控机床工作模式与系统设计方案的联系
- 浅析模块化轴系结构组装课件动画项目设计
- 浅析煤矿机械常见液压故障
- 浅析船舶自动化设备的信息化保障技术
- 浅析工业减速机的使用与维修
- 中医护理发展难点分析与对策
- 分析小学生思想品德教育难点
- 高校学生公寓管理现状\难点和建议
- 浅论基层计划生育工作的难点与重点
- 生物教学难点的突破
- 试论现代船舶涂装技术的重难点
- 浅议高中物理的难点教学
- 物理教学重难点的突破
- 探讨园林施工技术难点与管理对策
- 路桥施工安全管理的难点与优化
- 在全市下半年投资和重点项目推进工作电视电话会议上的讲话
- 在全区“重点建设项目开工落地突击月活动”动员会议上的讲话
- 全县重点项目汇报提纲
- 在全镇重点项目观摩会上的讲话
- 在县经济工作汇报暨重点项目观摩总结点评会议上的讲话
- 在2021年第一季度重点项目观摩会上的讲话
- 在全市义务教育均衡发展暨重点项目推进会上的讲话
- 全市交通重点项目推进工作会议主持讲话
- 在全市一季度重点项目集中开工仪式上的讲话
- 在全市投资和重点项目推进工作电视电话会议上的讲话
- 语言文字工作总结
- 构建语言支架,发展语言能力
- ST语言中定时器转换为C语言的研究
- 论“语言相对论”与“语言相关性”
- 从语言接触看语言文化演变
- 基于语言资源理念的语言规划
- 语言文字工作计划(16篇)(完整)
- 教师语言文字培训心得体会范本【五篇】(范文推荐)
- 上一篇:网络应用编程课程的教学实践与思考
- 下一篇:计算机专业实验教学体系改革的研究与实践