为Objective-C学习C语言

时间:2012-06-02 00:18:25

标签: objective-c c

我相对精通Objective-C,但我一直在寻找一些我将来可能会使用的框架和库,我越来越多地看到使用C.到目前为止,我编写的唯一应用程序只包含Objective-C 。我知道Objective-C是C的超集,但是当我说我只用Objective-C编写时,我的意思是我只使用了Objective-C方法和Objective-C的语法,它与C明显不同句法。我一直在处理与C和Objective-C之间的关系有关的问题(见下面的链接),我想开始学习C,但显然有三种类型的C(K& R,C89和C99),以及我想知道我应该学习哪种类型来帮助我使用Objective-C。我从学习Objective-C中知道我也在不知不觉中学习了C,但我想了解C的来龙去断并熟悉它的功能,语法,功能等。另外,Objective-C基于任何一个三种类型的C?

2 个答案:

答案 0 :(得分:5)

我建议你看看关于C的一些介绍性文章,并学习文本教授的任何C方言。这可能是C89或C99。

K& R C缺少现代功能,例如“原型”(声明函数参数的数量和类型)。 C89添加了所有内容。

C99主要是在特定域中有用的小增量功能。在C89和C99中,您需要学习的大部分内容应该是相同的。有趣的事实:微软从不打算实施C99。

实际上,我会建议一个具体的介绍性文字:使用K& R的第二版。这基本上将K& R更新为C89。 K& R是一本优秀的书,是学习C语言的绝佳选择。

https://stackoverflow.com/questions/1646667/kr-1st-edition-vs-2nd-edition

答案 1 :(得分:5)

还有更多类型的C.在此期间,C0X和C11被定义了......它们都只是从它们的前辈那里做出了很小的进化步骤,所以你不必担心它。 Objective-C基于C99(实际上是减去浮点编译指示),所以现在可能是最合适的。

您的问题并不完全清楚,但您确实注意到C的这些变化只是不同年份的演变规范吗? K& R来自ca. 1978年,1989年的C89,1999年的C99等... Objective-C被设计为C的严格超集,因此您可能希望Objective-C有一天能够结合C11功能。

(注意:若干编辑包含评论中的信息)