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相关推荐

  1. c语言程序设计指针教学,C语言程序设计中指针教学要点分析

    C语言程序设计中指针教学要点分析 徐 兵 ( 广东海洋大学信息学院, 广东 湛江 524088) 1 指针知识单元构成 1.1 指针定义 在计算机内存中, 每一个存储单元(通常为 1 字节 )都有一个 ...

  2. 计算机有效教学案例分析,中职计算机应用基础有效教学案例分析.doc

    中职计算机应用基础有效教学案例分析.doc (7页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 俩瘫直词琼下矫焉原温沽己动府罚斗寒详沛凡 ...

  3. 将军今天讲c语言了吗第六,计算机c语言 第六章:函数 教学设计(修改).doc

    <C语言程序设计>之 ----- "函数"教学设计 贵州交通技师学院 张 红 <C语言程序设计>之 ----- "函数"教学设计 [教材 ...

  4. c语言智能小车项目的感想,智能小车毕业论文(完整版)要点分析.doc

    学 士 学 位 论 文 系 别: 计算机科学与技术 学科专业: 计算机科学与技术 姓 名: @@@@ @@@ 2011年 0月 智能小车引导控制系统 的设计与实现 系 别: 计算机科学与技术学科专业: ...

  5. 【C#程序设计】教学讲义——第三章:C#语言基础

    完整C#教学课件系列: [C#程序设计]教学讲义--第一章:C#语言概述 [C#程序设计]教学讲义--第二章:简单C#程序设计 [C#程序设计]教学讲义--第三章:C#语言基础 文章目录 3.1 C# ...

  6. c语言程序设计实验教学,C语言程序设计实验教学改革研究

    语言程序设计是目前各高校计算机及其相关专业的一门基础课程,也是其它工科专业学生必修的计算机基础课程之一,是学生学习程序设计的入门课程.同时,该课程是一门应用性很强的学科.随着计算机技术飞速发展,计算机 ...

  7. 专业本的C语言,以解决本专业问题为导向的C语言程序设计课程教学探索

    以解决本专业问题为导向的C语言程序设计课程教学探索 发布时间:2019-08-07 来源: 摘 要 针对C语言程序设计课程在计算机及其相关专业中存在的"狭义工具论"的教学现状,本着 ...

  8. c语言程序女设计教学效果分析,C语言程序设计的教学论文

    C语言程序设计的教学论文 1C语言程序设计教学方法研究 1.1理论教学 对于大多数课程而言,从宏观上将课程知识点及其关联讲授给学生非常必要,这便于学生更加系统深刻地理解所学内容.作为教材讲解C语言程序 ...

  9. c语言程序优化设计,C程序设计语言的教学策略优化设计

    摘要:本文围绕提高C语言课堂教学的教学质量,依据教学内容的属性与特点,融合任课教师的教学经验与智慧,通过选择恰当的教学方法,采用合理的教学手段设计了一种教学优化策略,强化了教学方案设计的科学性,保证了 ...

  10. 耿国华c语言程序设计,C语言程序设计课程教学探究.doc

    C语言程序设计课程教学探究 C语言程序设计课程教学探究 摘 要:C语言程序设计课程作为一门基础的计算机程序设计课程,其对于计算机教学具有重要的意义,同时也是许多院校理工科学生的必修课程.本文阐述了C语 ...

最新文章

  1. SpringBoot面试题(持续整理中……)
  2. Python数据分析与挖掘
  3. 阿里对象存储OSS在laravel框架中的使用
  4. Linux搭建SVN(CollabNet Subversion)服务器 可视化界面
  5. HDU 2001 计算两点间的距离
  6. uva 11383(二分图最大权匹配)
  7. poj-1980 Unit Fraction Partition **
  8. 反地理编码 高德地图_由中文地址返回点位坐标-地理编码脚本分享
  9. K-Means与KNN比较
  10. C-Free5.0破解码
  11. Django之开发微信小程序后端-Django篇②
  12. BZOJ 3097 Hash Killer I
  13. selenium利用cookie跳过验证码登录
  14. 删除文件夹遇到的 错误ox80070091:目录不是空的错误解决
  15. 手机里舍不得删的48条短信
  16. JQuery验证手机号电话号码
  17. 20W了,从一颗种子开始 | 送书
  18. linux下磁盘测速工具
  19. Unity3D VideoPlayer播放视频和音频
  20. Android学习方向

热门文章

  1. 使用一个插件将Zend Framework应用程序的内容转换为xml
  2. moss form验证 配置文件关键部分
  3. 对文字颜色从左到右(横向)渐变的一点理解(坑)
  4. 《算法设计与分析》一一第3章 线性表的遍历
  5. HashMap hash 原理分析
  6. 关于数据库“事务”“索引”“实例”的含义
  7. String类的编码和解码问题
  8. 让图片左右缓慢移动的MoveView
  9. hadoop+lucene+web 综合小demo
  10. 自minibox-b配置说明