c语言中指,C语言程序设计中指教学要点分析.doc
C语言程序设计中指教学要点分析
C语言程序设计中指针教学要点分析
徐 兵
( 广东海洋大学信息学院, 广东 湛江 524088)
1 指针知识单元构成
1.1 指针定义
在计算机内存中, 每一个存储单元(通常为 1
字节 )都有一个固定的编号, 就像酒店中的房间号
码一样, 这个编号就称为地址, 如图 1 所示。变量
P 和 x的地址分别是 3610 和 2000, 相当于房间
号。在地址所标识的内存单元中存放数据, 如在变
量 x的单元中存放一个数 9, 这就相当于酒店中各
个房间里居住的旅客一样。
&x为变量 x的地址,*p 为指针变量 p 所指向的存储
单元。应该注意的是在定义时 * 只起说明作用, 不
是运算符。
比如下面的语句中:float x= 1.5; float
*P= &x; float *P= x; 根据指针的定义很显然第 2 条语句是正确的。迷
惑的原因就在把 * 当成了运算符。其实, 这里的
float * 共同来修饰 P, 定义一个指向浮点型的指
针变量, 同时要将一个指针 &x赋值给 P。1.3 指针与数组
1.3.1 指针与数组区别。在 C语言中数组与指
针的关系非常密切, 但它们还是有着本质上的区
别。指针可以随时指向任意类型的内存单元, 它的
特征是可变。所以我们常用指针来操作动态内存。
当数组作为函数的参数进行传递时, 该数组自动
退化为同类型的指针。例如:char x []="china";
char *p="china"; 上述两个变量的内存布局情况
是:数组 x需要在内存中占用 6 个字节的空间。这
段内存区通过数组名 x来标志。指针 P 则需要 4
个字节的空间来存放地址, 这 4 个字节用 P 来标
志。其中存放的地址几乎可以指向任何地方,也可
以哪里都不指。目前这个 P 指向某地连续的 6 个
字节即字符串"china"。在教学过程中应该注意使
学生能够正确认识数组与指针的区别, 并正确运
用它们。
1.3.2 数组指针。数组指针的实质是指针, 其
定义为:int (*p)[n]; 表示 P 为指向由 n 个元素组成
的一维数组的指针变量。
图 2 数组指针与二维数组
1.3.3 指针数组。指针数组的实质是数组, 其
定义为:int*p[n];表示数组 P 由 n 个指向整型数据
的指针元素组成。指针数组中的每一个元素都相
当于一个指针变量, 它的值都是地址。用指针数组
来处理不定长的字符串很方便, 例如有几个姓名
字符串需要存储在数组中, 若用一个二维数组来
存储, 由于不知道每个字符串长度, 只能留出尽可
能多的空间, 这样往往会浪费很多内存空问, 而且
对字符串的排序等操作也很麻烦。用指针数组来
定义时, 就不必了解每个字符串的长度, 只要用指
针数组中的元素分别指向它们, 不浪费内存空问,
而且对字符串排序时, 不必改动字符串的位置, 只
需改变指针的指向, 从而大大提高程序的效率。这
个知识点在教学中应注意使学生区分指针数组和
数组指针两个概念。尤其在定义时要注意书写规
范, 不能把指针数组与数组指针的定义混淆。
1.3.4 指向指针的指针。指向指针的指针变量
的一个定义形式为:char **p; 表示指针变量 P 指
向字符指针变量, 或者说 P 所指向的是一个地址。数组指针适用于列宽确定, 行需要动态生
成的场合。指针数组适用于行数确定, 列需要动态
生成的场合。指向指针的指针适用于行列均需要
动态生成的场合。
FurtherDiseussionontheMulti一dimensionalArray & Pointeh
ofCLanguageLearning
C语言多维数组与指针的探讨一、相关知识与概念:
变量的指针:变量在内存中存放的地址。
指针变量:存放变量地址的变量,用来指向另一个变量。
数组:有序数据的集合。数组中的每一个元素都属于同一个数据类型。
数组的指针:数组在内存中存储的起始地址。
数组元素的指针:数组元素在内存中存储的地址。
乙运算符:取地址运算符。翻为变量:的地址。
一运算符:指针运算符(或称为“间接访问”运算符)。`1Ponietr为指针变量i一Pointer所指向变
量的存储单元。
对于二维数组a,可得到下面几个公式:
数组的起始地址:a一a〔0〕~肠[0」〔0」一’a;
第i行起始地址:a〔i]=’(a+i)=腼[i]仁。〕;
数组元素a〔ij〔j〕的地址:阮〔i」〔j」=a[i〕+J=’(a+i)+j;
数组元素a仁i」〔j〕:a〔i〕〔j〕~`(a仁i〕+j)一’(’(a+i)+j);
在计算机内存中存储二维数组是按行存储的,所以知道二维数组的首地址后,数组变量a及具有与
a相同基类型的指针变量Pa,也可以找到其中任意元素的地址:执行Pa二a后,a〔ij[
c语言中指,C语言程序设计中指教学要点分析.doc相关推荐
- c语言程序设计指针教学,C语言程序设计中指针教学要点分析
C语言程序设计中指针教学要点分析 徐 兵 ( 广东海洋大学信息学院, 广东 湛江 524088) 1 指针知识单元构成 1.1 指针定义 在计算机内存中, 每一个存储单元(通常为 1 字节 )都有一个 ...
- 计算机有效教学案例分析,中职计算机应用基础有效教学案例分析.doc
中职计算机应用基础有效教学案例分析.doc (7页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 俩瘫直词琼下矫焉原温沽己动府罚斗寒详沛凡 ...
- 将军今天讲c语言了吗第六,计算机c语言 第六章:函数 教学设计(修改).doc
<C语言程序设计>之 ----- "函数"教学设计 贵州交通技师学院 张 红 <C语言程序设计>之 ----- "函数"教学设计 [教材 ...
- c语言智能小车项目的感想,智能小车毕业论文(完整版)要点分析.doc
学 士 学 位 论 文 系 别: 计算机科学与技术 学科专业: 计算机科学与技术 姓 名: @@@@ @@@ 2011年 0月 智能小车引导控制系统 的设计与实现 系 别: 计算机科学与技术学科专业: ...
- 【C#程序设计】教学讲义——第三章:C#语言基础
完整C#教学课件系列: [C#程序设计]教学讲义--第一章:C#语言概述 [C#程序设计]教学讲义--第二章:简单C#程序设计 [C#程序设计]教学讲义--第三章:C#语言基础 文章目录 3.1 C# ...
- c语言程序设计实验教学,C语言程序设计实验教学改革研究
语言程序设计是目前各高校计算机及其相关专业的一门基础课程,也是其它工科专业学生必修的计算机基础课程之一,是学生学习程序设计的入门课程.同时,该课程是一门应用性很强的学科.随着计算机技术飞速发展,计算机 ...
- 专业本的C语言,以解决本专业问题为导向的C语言程序设计课程教学探索
以解决本专业问题为导向的C语言程序设计课程教学探索 发布时间:2019-08-07 来源: 摘 要 针对C语言程序设计课程在计算机及其相关专业中存在的"狭义工具论"的教学现状,本着 ...
- c语言程序女设计教学效果分析,C语言程序设计的教学论文
C语言程序设计的教学论文 1C语言程序设计教学方法研究 1.1理论教学 对于大多数课程而言,从宏观上将课程知识点及其关联讲授给学生非常必要,这便于学生更加系统深刻地理解所学内容.作为教材讲解C语言程序 ...
- c语言程序优化设计,C程序设计语言的教学策略优化设计
摘要:本文围绕提高C语言课堂教学的教学质量,依据教学内容的属性与特点,融合任课教师的教学经验与智慧,通过选择恰当的教学方法,采用合理的教学手段设计了一种教学优化策略,强化了教学方案设计的科学性,保证了 ...
- 耿国华c语言程序设计,C语言程序设计课程教学探究.doc
C语言程序设计课程教学探究 C语言程序设计课程教学探究 摘 要:C语言程序设计课程作为一门基础的计算机程序设计课程,其对于计算机教学具有重要的意义,同时也是许多院校理工科学生的必修课程.本文阐述了C语 ...
最新文章
- SpringBoot面试题(持续整理中……)
- Python数据分析与挖掘
- 阿里对象存储OSS在laravel框架中的使用
- Linux搭建SVN(CollabNet Subversion)服务器 可视化界面
- HDU 2001 计算两点间的距离
- uva 11383(二分图最大权匹配)
- poj-1980 Unit Fraction Partition **
- 反地理编码 高德地图_由中文地址返回点位坐标-地理编码脚本分享
- K-Means与KNN比较
- C-Free5.0破解码
- Django之开发微信小程序后端-Django篇②
- BZOJ 3097 Hash Killer I
- selenium利用cookie跳过验证码登录
- 删除文件夹遇到的 错误ox80070091:目录不是空的错误解决
- 手机里舍不得删的48条短信
- JQuery验证手机号电话号码
- 20W了,从一颗种子开始 | 送书
- linux下磁盘测速工具
- Unity3D VideoPlayer播放视频和音频
- Android学习方向