为什么指针对许多C或C++的大学水平的新生甚至老学生来说是一个主要的困惑因素?是否有任何工具或思维过程可以帮助您理解指针在变量、函数和更高级别上是如何工作的?
有什么好的做法可以让人们达到“啊哈,我知道了”的水平,而不会让他们陷入整体概念的泥潭?基本上,类似于演练的场景。
发布于 2008-08-08 21:50:16
在我的第一堂比较科学课上,我们做了以下练习。诚然,这是一个有大约200名学生的报告厅…
教授在黑板上写道:int john;
约翰站起来
教授写道:int *sally = &john;
萨利站起来,指着约翰。
教授:int *bill = sally;
比尔站起来,指着约翰
教授:int sam;
山姆站起来
教授:bill = &sam;
比尔现在指着山姆。
我想你明白我的意思了。我想我们花了大约一个小时来做这件事,直到我们复习了指针赋值的基础。
发布于 2008-08-16 11:35:12
我发现一个对解释指针很有帮助的类比是超链接。大多数人都能理解,一个网页上的一个链接“指向”互联网上的另一个页面,如果你可以复制和粘贴那个超链接,那么它们都会指向同一个原始网页。如果您去编辑原始页面,然后沿着这些链接(指针)之一,您将获得新的更新页面。
发布于 2008-08-08 06:30:00
指针似乎让这么多人感到困惑的原因是,它们大多很少或根本没有计算机体系结构方面的背景。由于许多人似乎不知道计算机(机器)实际上是如何实现的-在C/C++中工作似乎很陌生。
练习是要求他们实现一个简单的基于字节码的虚拟机(在他们选择的任何语言中,python对此都很有效),并使用专注于指针操作(加载、存储、直接/间接寻址)的指令集。然后让他们为该指令集编写简单的程序。
任何需要比简单的加法稍微多一点的东西都会涉及到指针,他们肯定会得到它。
https://stackoverflow.com/questions/5727
复制相似问题