eisbaw@leno:~$ cdecl explain 'int (*(*foo)(const void *))[3]'
declare foo as pointer to function (pointer to const void) returning pointer to array 3 of int
最后,当进入 C 语言时,指针是令人困惑的,尽管 K & R 做了很好的解释。我用 C 语言学习它们的方法是知道如何读它们——从右到左。就像当我在脑海中看到 int *p时,我会说“ p指向 int”。C 是从汇编语言发明出来的,这就是我喜欢它的地方——它接近于“地面”。如果没有这种基础,指针就像其他任何东西一样更难理解。
就我个人而言,甚至在我毕业后和第一份工作之后,我都不理解这个指针。我唯一知道的是,你需要它的链表,二进制树和传递数组到函数。我第一份工作的时候就是这种情况。只有当我开始接受采访时,我才明白指针的概念是深刻的,有着巨大的用途和潜力。然后我开始阅读 K & R 并编写自己的测试程序。我的全部目标都是为了工作。
在这个时候,我发现如果教授的方法很好,那么指针真的不错,也不难。不幸的是,当我在毕业典礼上学 C 的时候,我的老师并没有意识到指针的重要性,甚至作业中指针的使用也很少。在研究生级别中,指针的使用实际上仅限于创建二叉树和链表。这种认为不需要正确理解指针就可以使用它们的想法扼杀了学习它们的想法。