对于那些有课程开发经验的人:关于数组的最佳策略是什么?
我见过一些学校在变量和控制结构之后教授数组,甚至在教学功能之前.这允许教授一些基本的算法等.然而,它带来了如何将数组传递给函数的问题,因此有必要回到数组指针教授和补丁.
另一个选择是从变量和控制结构转到函数,然后教指针,一旦你有指针,从头开始教数组,然后使用它来获得动态内存分配.
对我来说第二个选项更有意义,因为与简单变量不同,使用数组很容易"走出界限",但是尚未了解内存和指针的学生可能无法理解这些界限之外的内容.
但是,我很想知道其他人的想法.
我认为最好的方法是一次引入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和打印地址.这真的有助于了解正在发生的事情.
我会先教指针.可以在不教授数组的情况下解释它们 在教授数组时,我可以在解释表达式时引用指针a[i]
,并解释如何将它们传递给函数.
不要过分思考.
尽可能清晰,有吸引力地教授这些概念远比你做它们的顺序更重要.
我建议先介绍一下数组的基础知识,然后再做一些指针和重新访问数组(这次更充分).
您应该首先教授数组,因为它们几乎存在于任何其他语言中,并且更容易理解.指针或指针的某些方面建立在有关数组的基础上.这是有机秩序,imho,以及我在以后学习它的方式.