首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在教授C语言时,在指针之前还是之后教授数组更好?

在教授C语言时,在指针之前还是之后教授数组更好?
EN

Stack Overflow用户
提问于 2009-03-22 00:51:00
回答 14查看 3.4K关注 0票数 19

对于那些有课程开发经验的人来说:关于阵列的最佳策略是什么?

我见过一些学校在教授变量和控制结构之前教授数组,甚至在教授函数之前。这允许教授一些基本的算法等。然而,它带来了如何将数组传递给函数的问题,因此有必要回到数组指针被教导和修补的东西。

另一种选择是从变量和控制结构到函数,然后示教指针,一旦有了指针,从头开始示教数组,然后使用它来实现动态内存分配。

对我来说,第二种选择更有意义,因为与简单的变量不同,使用数组很容易“越界”,但是还没有学习内存和指针的学生可能不知道这些界限之外的是什么。

然而,我有兴趣知道别人的想法。

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2009-03-22 00:53:59

我认为最好的方法是一次引入一个概念。你不需要100%解释第一个模块中的数组。你可以通过一次引入一个概念来分离几乎任何东西。

我将按以下顺序教授它们:数组、指针、Arrays+Pointers、OtherStuffN。

阵列:

你可以先教简单的数组,这样他们就能理解从一个变量名访问多个数据槽的能力。

代码语言:javascript
复制
//The following doesn't need an understanding of pointers
int x[10];
x[0] = 5;

指针:

然后,您可以从一些简单的示例开始,讲授指针及其工作原理:

代码语言:javascript
复制
int y = 5;
int *p = &y;
*p = 6;
printf("%i\n", y);

一定要特别强调指针就像任何其他变量一样。它存储一个内存地址。

现在还不需要进入堆栈和堆的对比。

Arrays+Pointers:

如何使用指针遍历数组:

代码语言:javascript
复制
int x[10];
x[0] = 5;
x[1] = 6;
int *y = x;
printf("%i\n", *y);//prints the first element
y++;
printf("%i\n", *y);//prints the second element

然后你可以教更复杂的东西...

arrayi

  • How数组的指针arithmetic.

  • Array +I速记形式是memory

  • Explain字符串文字的连续块、缓冲区... work

  • ...

  • 如何使用指针与数组类型(指针大小与缓冲区大小更复杂的概念,如分配内存、indirection
  • References
  • How多维数组的大小和级别work
  • ...

在所有示例中,大量使用sizeof和打印地址。这真的有助于理解发生了什么。

票数 34
EN

Stack Overflow用户

发布于 2009-03-22 00:55:11

我会先教指针。它们可以在不讲授数组的情况下进行解释。在教授数组时,我可以在解释表达式a[i]时引用指针,以及在解释如何将它们传递给函数时引用指针。

票数 9
EN

Stack Overflow用户

发布于 2009-03-22 01:00:20

不要想太多的事情。

尽可能清晰和引人入胜地教授这些概念远比你按什么顺序来做要重要得多。

我建议先接触数组的基础知识,然后再做指针和重新访问数组(这一次更全面)。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/670353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档