c语言递归指针,C语言中多维数组指针和递归的教学实践

这篇博客探讨了在C语言教学中,学生普遍遇到的多维数组指针运算和递归理解难题。通过引入面指针、行指针和列指针的概念,以及采用图示法和类比法,教学效果得到提升。文章详细解释了如何将行指针视为二级指针,列指针视为一级指针,并介绍了如何用类似方法理解更复杂的三维数组。此外,还强调了递归理解的重要性。
摘要由CSDN通过智能技术生成

! 引 言

!语言具有较强的数据表达能力和丰富的运算符! 使用 灵活

方便!易于移植!生成 的目标代码 效率高!既有高 级语言的 优点!

又具备低级语言的许多特点" 因此!! 语言 "# 多年来在许多领域

得到了广泛的应用!许多高校和职校把它作为编程的首要教学 语

言!也是 进一步 学习数 据结构#算 法分析 #操 作系 统#!$$和 %&’&

语言等课程的前导课程"

但相比与其它一些高级语言!! 语言牵涉到的概念复杂!规则

繁多!容易使学生感到困惑和迷茫" 我们在长期的教学过程中!发

现学生 的学习难点 主要集中 在多维数组 指针的运 算和对递归 概

念的理解上 !因此 !针 对这两个难 点!不断改进教 学方法!在教 学

中引入图示法和类比法!取得了较好的教学效果"

" 多 维数组 指针 运算 的教 学

一维数组的指针运算学生较容易理解!但多维数组的指针 运

算是教学中 的一个难 点!为此在教学 中我们引 入了面指针 #行 指

针和列指针等概念"

我们知道 在 ! 语言中!一个二维数组可以看成是一个一 维数

组!其中每个元素又是一个包含若干元素的一维数组"

假如有定义$()* &+" ,+-,.

则 ! 语言编译程 序认为二维数组 & 是由 & +#, /&+0, 1&+2,三个 元

素组成的一维数组!&+#,#&+0,和 &+2,分别是包含四个元素的一 维数

组名!如图 0 所示"

图 ! 二维数组指针

二维数 组名 & 代表 第 # 行 的首地 址!&$( 代表 第 ( 行 的首 地

址!每加 0 刚好跳过一行!所以 &和 &$( 可以看作是行指针"

34&5(6!即 &+( ,!是一维 数组名!代表第 ( 行第 # 列 的地址!37&5

(859 代表第 ( 行第 9 列的地址!它们可以看作是列指针"

而 3434&5(8598代表第 ( 行第 9 列上的元素!即 &+( ,+ 9,"

从 而可得出以 下结论$行指针 前加 3 号 得到列指针 !列指针

前 加 3 号得到 元素!所以可把 行指针看 作是二级指 针!即指向指

针的指针!而列指针可看作是一级指针!即指向数据的指针"

对于更复杂的三维数 组可引入面指针!面指针 前加 3 号得到

行指针!形成立体访问机制"

假如有定义$() * : +2 ,+" ,+", .

图 " 三维数组指针

如上图所示!三维数组名 : 代表第 # 面的首地址!:5( 代表第

( 面的首地址!每加 0 刚好跳 过一面!所以 : 和 :5( 可以看作是面

指针!属于三级指针"

34:5(8!即 :+(,!可看作是二维数组名!代表 第 ( 面首行的地址!

34:5(859 代表第 ( 面第 9 行的地址!它们可以看作是行指针"

3434:5(8598!即 :+( ,+ 9,!是一维数组名 !代表第 ( 面第 9 行第 # 列

的地址!3434:5(85985; 是第 ( 面第 9 行第 ; 列的地址!属于列指针"

而 343434:5(85985;8代表第 ( 面第 9 行第 ; 列上的元素!即 :+(, +9 ,+; ,"

引 入了面指针 #行 指针和列指 针的概念 后!再教授指 针数组

时!学生就较易理解!指针数组中的元素可以看作是列指针!一维

指针数 组名可看作是行指针!而二维指针数组名则 可看作是面指

针"

通过上面的讲述!再给出定义 $()* 3<=&/ 3<

:. 这里 < 是一级指针变量!<< 是二级指针变量!<<< 是三级指针

变量" 学生就很容易明白为什么

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值