如何解决人们对 C 指针有什么困难??

我怀疑人们的答案有点太深了。并不真正需要了解调度、实际 cpu 操作或程序集级内存管理。

在教学过程中,我发现学生理解中的以下漏洞是最常见的问题来源:

  1. 堆与堆栈存储。令人震惊的是,有多少人不理解这一点,即使在一般意义上也是如此。
  2. 堆栈帧。只是局部变量堆栈的专用部分的一般概念,以及它是“堆栈”的原因......诸如隐藏返回位置,异常处理程序细节和以前的寄存器等细节可以安全地留到有人尝试构建一个编译器。
  3. “内存就是内存” 强制转换只是改变了操作符的版本或者编译器为特定的内存块提供了多少空间。当人们谈论“(原始)变量 X 到底是什么”时,您知道您正在处理这个 问题

我的大多数学生都能够理解一块内存的简化图,通常是当前范围内堆栈的局部变量部分。通常,为各个位置提供明确的虚构地址会有所帮助。

我想总而言之,我是说如果你想理解指针,你必须理解变量,以及它们在现代架构中的实际含义。

解决方法

从这里发布的问题数量来看,很明显,人们在研究指针和指针算术时会遇到一些非常基本的问题。

我很想知道为什么。它们从来没有真正给我带来过重大问题(尽管我第一次了解它们是在新石器时代)。为了更好地回答这些问题,我想知道人们觉得困难的是什么。

那么,如果您正在为指针而苦苦挣扎,或者您最近突然“明白”了,那么指针的哪些方面给您带来了问题?