当前位置:  开发笔记 > 人工智能 > 正文

在教C时,在指针之前或之后教导数组会更好吗?

如何解决《在教C时,在指针之前或之后教导数组会更好吗?》经验,为你挑选了4个好方法。

对于那些有课程开发经验的人:关于数组的最佳策略是什么?

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

另一个选择是从变量和控制结构转到函数,然后教指针,一旦你有指针,从头开始教数组,然后使用它来获得动态内存分配.

对我来说第二个选项更有意义,因为与简单变量不同,使用数组很容易"走出界限",但是尚未了解内存和指针的学生可能无法理解这些界限之外的内容.

但是,我很想知道其他人的想法.



1> Brian R. Bon..:

我认为最好的方法是一次引入1个概念.您不需要在第一个模块中100%解释数组.您可以通过一次引入1个概念来解决几乎任何问题.

我会按顺序教他们:数组,指针,数组+指针,OtherStuff [N].


阵列:

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

//The following doesn't need an understanding of pointers
int x[10];
x[0] = 5;

指针:

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

int y = 5;
int *p = &y;
*p = 6;
printf("%i\n", y);

确保特别强调指针就像任何其他变量一样.它存储一个内存地址.

目前还没有必要进入堆栈与堆.


数组指针+:

如何使用指针迭代数组:

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

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

如何做指针运算.

Array + i数组的简写[i]

将数组作为数组pointets vs pointer param + size param传递给函数

数组是如何连续的内存块

解释字符串文字,缓冲区,......

sizeof如何使用指针与数组类型(指针大小与缓冲区大小)

解释更复杂的概念,如分配内存,堆栈和堆

多级间接

参考

多维数组如何工作

...

在所有示例中,大量使用sizeof和打印地址.这真的有助于了解正在发生的事情.


对于高级主题,多维数组可能很有用.关于将2D结构表示为具有显式2D索引的"int**arr"或具有手动索引的"int*arr"的权衡可以在学生准备好时有所帮助.

2> Johannes Sch..:

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



3> Legion..:

不要过分思考.

尽可能清晰,有吸引力地教授这些概念远比你做它们的顺序更重要.

我建议先介绍一下数组的基础知识,然后再做一些指针和重新访问数组(这次更充分).



4> cdonner..:

您应该首先教授数组,因为它们几乎存在于任何其他语言中,并且更容易理解.指针或指针的某些方面建立在有关数组的基础上.这是有机秩序,imho,以及我在以后学习它的方式.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有