学习C ,常见的误解
时间:2021-08-19 15:26:41
手机看文章
扫描二维码
随时随地手机看文章
[导读]学习C你是否会有以下几点误解?1.“要理解C,你必须先学习C” 2.“C是一门面向对象的语言” 3.“为了软件可靠性,你需要垃圾回收” 4.“为了效率,你必须编写底层代码” 5.“C只适用于大型、复杂的程序” 如果你中*了,说明这篇文章适合你看。对某些人,某些任务,在某些时间,其...
学习C 你是否会有以下几点误解?
1. “要理解C ,你必须先学习C” 2. “C 是一门面向对象的语言” 3. “为了软件可靠性,你需要垃圾回收” 4. “为了效率,你必须编写底层代码” 5. “C 只适用于大型、复杂的程序” 如果你中*了,说明这篇文章适合你看。对某些人,某些任务,在某些时间,其中一些误解曾经只是正确的。然而,在如今的C ,应用广泛使用的最先进的ISO C 2011编译器和工具,它们只是误解。 下面来一一解释 误解一:“要理解C ,你必须先学习C” 学习C 基础编程比学习C要容易地多。 C几乎是C 的一个子集,但是它不是最先要学习的最好的子集,因为C缺少计数支持,类型安全,和易用的标准库,而C 为简单任务提供了这些。 误解二:“C 是一门面向对象的语言” C 支持OOP和其他编程风格,但它并不局限于狭隘的“面向对象”。它综合地支持了包括面向对象和泛型编程技术。通常,一个问题的最优解决方案,包含不止一种风格(范例)。“最优”,我指的是最短、最易于理解、最有效率和最易于维护等。 “C 是一门面向对象的语言”使人们认为C 不是必要的(当与C做比较时),除非你需要一个巨大的类继承层次以及很多须函数(运行时多态)——对很多人和很多问题,这样应用并不合适。相信这个误区导致C 因为不是纯面向对象而遭到谴责;毕竟,如果你把“好”和“面向对象”等同起来,那么C 明显包含了很多不是面向对象的东西,一定会被认为是“不好”。不管是哪种情形,这个误解为不学习C 提供了一个很好的借口 误解三:“为了软件可靠性,你需要垃圾回收” 在回收不再使用的内存上,垃圾回收做的很好,但是并不完美。它并非灵丹妙药。因为内存可以被间接地引用,并且很多资源并不是普通内存。 误解四:“为了效率,你必须编写底层代码” 许多人相信高效率的代码必须是底层代码。一些人甚至认为底层代码天生就是高效的(“如果代码很丑陋,那它一定很高效!一定有人花费了大量时间和精力来优化它!”)。当然,你仅仅使用底层代码是可以写出高效代码的,并且有时在直接处理机器资源时必须使用底层代码。 然而,你一定要衡量一下工作是否有价值:现代C 编译器非常高效,而现代机器架构非常复杂。如果必须使用底层代码,一定要通过接口封装起来,以便于使用。通常,通过高层接口封装底层代码,会带来更好的优化(如,避免“滥用”底层代码)。在关注效率的场合,首先尝试用高层抽象来呈现需要的解决方案,而不要不加考虑地使用比特位和指针。 误解五:“C 只适用于大型、复杂的程序” C 是一个巨型的语言。它定义的大小和C#与Java差不多。但是这并不意味着你必须知道每一个细节,或者在每一个程序中都用到所有特性。 接下来再说一个C 非常经典的易犯错的案例 错误代码: 12bool operator( )(const GUID