了解指针有多重要?

时间:2009-06-16 09:33:27

标签: c pointers

我的指针非常弱,因为无法获得一些好书而归咎于它...在用c设计编译器时,掌握指针的知识有多重要?任何好书?

11 个答案:

答案 0 :(得分:17)

从1-10开始,大约12分。它是语言的重要组成部分,也是编译器中更重要的部分。

答案 1 :(得分:15)

特别是在使用C(或C ++)时,完全理解指针真的非常重要。很多事情都归结为操纵指针和内存,并且在C编译器开发过程中可能会出现许多与指针相关的“技巧”。
“好书”并没有真正帮助你,这只是一个你需要了解的概念 谷歌网上的指针教程,并通过它们直到它点击。例如: http://home.netcom.com/~tjensen/ptr/pointers.htm

答案 2 :(得分:10)

至关重要。

答案 3 :(得分:9)

这是非常基本的。如果您不知道这一点,那么您远不是用C编写编译器,因为这完全是关于动态结构(树)及其上的操作。

解析通常会产生一棵树,有时在语义分析后转换为另一棵树,然后修改(例如优化),然后写出更线性的格式(IL或比标签汇编程序高一级的东西)

答案 4 :(得分:3)

编译器编写者需要了解指针,因为他或他将设计一台机器来将高级语言(如c或pascal或perl)转换为汇编代码或机器代码。

你不能在不理解指针的情况下编写汇编代码,它只是不可能,除非你永远不想拥有对象或全局变量或通过引用传递或与操作系统交互以打开文件读取或写入显示缓冲区。

对于编译器的用户来说,所有这些都是很方便的东西。

答案 5 :(得分:2)

这非常重要。我开始在没有任何知识的情况下开发(C,C ++和现在的Objective-C),当然也不是阅读有关指针的人。和他们一起工作让我意识到了基础,但就是这样。

一开始并没有引起任何实际问题,而我的程序很简单,但从长远来看,当我的程序变得更加复杂并且我的工作变得更加重要时(即:其他人依赖于他们),我缺乏有关指针的知识引起了我的注意,我不得不重写并重新理解我的大部分代码......这是一个痛苦的现实,而后果是我不关心在低(呃)级编程中如此重要的事情。< / p>

还要很好地理解垃圾收集或保留计数(malloc,dealloc,new等等)。在正确的时间释放和创建对象非常非常重要,并且与指针密切相关。

答案 6 :(得分:1)

即使程序员在现代托管代码语言中没有使用指针,它们仍然在编译器中使用,可以帮助您作为程序员生成更好,更快,更稳定的程序。

作为一个例子,我不知道如何解释为什么在连接大量字符串而不说单词指针时应该使用StringBuilder而不是字符串:)。

答案 7 :(得分:1)

在C?字符串表示为指针(以空终止的序列)。几个标准库函数指向其他函数(qsort)。没有必要编写自己的链表或二叉树实现,但每一个都会使用指针,并期望你理解它们。

此外,如果你想把某些东西放在堆栈以外的地方,你需要使用指针。通常,您将打开文件并返回“文件指针”,这是一个与指针交互的结构。

然后,如果你打算编译一个自己有指针的语言,......

总的来说,这是你不能没有的事情。

答案 8 :(得分:1)

你必须掌握指针以便在C中成功编程。没有它们你将无法正确处理内存管理,实现大多数高级数据结构以及几乎任何其他资源管理。你也会遇到处理数组的问题(因为它们可以并且会在某些情况下降级为指针)所以我担心你必须学会​​如何使用它们。

答案 9 :(得分:0)

在C中,你总是以这种或那种方式处理指针。几乎不可能不使用它们,性能明智非常重要。所以基本上要开发FAST,SECURE和可读代码,你应该熟悉这个主题。那里有很多好书...让我看看......我真的很喜欢“C Unleashed”,但那里有很多good tutorials out

答案 10 :(得分:0)

如果你开始用C / C ++开始写作,那么你应该首先了解一下,否则用C语言写作会很恐怖。学习如何通过指向函数的指针传递指针和数据,如何使用指针调试程序并研究指针的数学。如果你很好地了解这一点,你将不会在以后遇到很多问题