Uri*_*Uri 19 c arrays pointers
对于那些有课程开发经验的人:关于数组的最佳策略是什么?
我见过一些学校在变量和控制结构之后教授数组,甚至在教学功能之前.这允许教授一些基本的算法等.然而,它带来了如何将数组传递给函数的问题,因此有必要回到数组指针教授和补丁.
另一个选择是从变量和控制结构转到函数,然后教指针,一旦你有指针,从头开始教数组,然后使用它来获得动态内存分配.
对我来说第二个选项更有意义,因为与简单变量不同,使用数组很容易"走出界限",但是尚未了解内存和指针的学生可能无法理解这些界限之外的内容.
但是,我很想知道其他人的想法.
Bri*_*ndy 34
我认为最好的方法是一次引入1个概念.您不需要在第一个模块中100%解释数组.您可以通过一次引入1个概念来解决几乎任何问题.
我会按顺序教他们:数组,指针,数组+指针,OtherStuff [N].
阵列:
您可以先教授简单数组,这样他们就能理解从单个变量名访问多个数据槽的能力.
//The following doesn't need an understanding of pointers
int x[10];
x[0] = 5;
Run Code Online (Sandbox Code Playgroud)
指针:
然后,您可以通过一些简单的示例开始教授指针及其工作原理:
int y = 5;
int *p = &y;
*p = 6;
printf("%i\n", y);
Run Code Online (Sandbox Code Playgroud)
确保特别强调指针就像任何其他变量一样.它存储一个内存地址.
目前还没有必要进入堆栈与堆.
数组指针+:
如何使用指针迭代数组:
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
Run Code Online (Sandbox Code Playgroud)
然后你可以教更复杂的东西......
在所有示例中,大量使用sizeof和打印地址.这真的有助于了解正在发生的事情.