c 是一种简单的语言。
它真正提供的只有有宏、指针、结构、数组和函数。
不管什么问题,c 都靠宏、指针、结构、数组和函数来解决。
c是一种相对低级的语言,这就是说它可以处理对机器的一些操作。
c的指针提供了独立于机器的地址算术。
c没有很强的类型机制,虽然标准c加强了类型检查,但是比起Java或者c++,它的类型机制都不强。
这带来很大的灵活性的同时也带来了很多的问题。
c不提供直接的如字符串,集合,列表和数组等复合对象的操作。
它不能处理整个数组或者字符串的操作。
例如不能直接对整个数组进行比较。
除了由函数的局部变量提供的静态定义和堆栈外,它没有任何存储分配工具;也不提供堆和无用内存的回收。
也没有输入输出工具,没有read和write语句,也没有内部文件访问方法,所有这些都必须由函数调用来完成。
幸好标准c函数库提供了这些函数,要不然使用c的难度真的太大了。
由于它真正提供的东西很少,很多事情我们必须自己考虑。
如内存的操作,数据的抽象和组织。
而c++除了宏、指针、结构、数组和函数外,至少还提供了函数重载、缺省参数、自定义操作符、内联函数、引用、模板、异常、名字空间,等等。
所以用c++比用c 具有更宽广的空间,因为设计时有更多的选择可以考虑,因此c++也称为更好的c。
但这样简单的c却给我们带来很大的灵活性,可c语言的难也就难在了它的灵活。
人们说指针难,数组难操作,其实根本还是在于它太灵活。
对于数组和字符串操作,c++提供了模板,对于一些c语言里容易出现的错误如:数组越界,字符串结尾的空字符丢失等,c++可以定义类和重载解决这些问题,但在c语言这一切必须依靠我们的经验和细心。
因此对于我来说我并不推荐学习的第一门语言就是c语言,我希望在得到一些结构化编程的训练后再去学c语言。
这样当你在学习的时候就可以专注于c的那些烦人的陷阱和讨厌的低级操作。
而不用费很多心思在结构化编程的细节上,比如:循环次数(初学者很容易出现少一次或多一次这样的错误),清晰的选择结构(即使是编程高手也不见得把程序写的很清晰)。
如果你想直接学习c,那么也是先把它的语法熟悉,然后再去深入它的低级特性。
总结的说来,学习c语言就是要多写程序,多调试,多看代码,理解它的特点和工作方式,然后用c语言思考问题。
原文地址:https://www.weidianyuedu.com/content/4020553767349.html