0x01 概览

版权声明:此文章转载自_infocool

原文链接:http://www.infocool.net/kb/CPlus/201610/198435.html

如需转载请联系听云College团队成员小尹 邮箱:yinhy#tingyun.com

交待了C语言的历史、特性、优缺点、何其他基础内容。

C起源于贝尔实验室,于1972年开发,当时Dennis Ritchie和Ken Thompson一起设计UNIX系统。

特性:

高效性

指针:通过指针能够直接对内存单元里的数据进行操作,还可以用指针根据需要,随时向系统动态的申请内存资源。

指针机制的时间开销和空间开销都是最小的,运用指针机制,使得C/C++语言表达能力很强,能够描述各种复杂的数据结构;可以操作变量、函数、对象等

引用:引用 是 某个变量或对象 的 别名。(关键字typedef) 引用的实质就是引用地址,因而和指针是一样高效的。但引用克服了指针带来的不便。

内联函数:通常函数的调用需要一定的时间开销,这意味着调用时,时间用于建立调用、传递参数、跳转到函数代码并返回。嗯,就相当于#define的加强版。

可移植性 

这意味着,在一个系统上编写的C程序,经过很少的改动或不经过修改就可以在其他系统上运行。如果修改是必要的,则通常只需要改变伴随主程序的一个头文件中的几项内容即可。

面向编程人员

C语言允许访问硬件,并可以操纵内存中的特定位。 

C的语法不像其他语言那样严格,但使用C的时候,可能会犯一些其他语言中不会出现的错误。C有更多的自由,但使用的时候有更大的风险。

缺点

它没有边界检查,很容易发生内存冲突,有悬空指针和内存/资源泄漏,螺栓支持并发性,没有模块,没有命名空间。错误处理可能相当繁琐和冗长。当调用堆栈崩溃,或者攻击性输入操纵你的进程,很容易就产生一堆错误。

C的简洁性和其丰富的运算符相结合,使其可能会编写出极其难以理解的代码。C表达自由方面也有风险,你可能会犯非常难以追踪的编程错误。自由的代价永远是警惕。

c还有安全性,可靠性,但我不想再继续这个话题了。

关于C语言和计算机的工作原理,也有紧密的联系。这也说明,学好C还需学好微机原理。

cpu的工作非常简单:从内存中获取一个指令并执行,然后从内存中获取下一个指令并执行。。。。。。

cpu的工作区在寄存器(registers)之中,每个寄存器只能保存一个数。

cpu只能理解有限的指令(指令集,更多内容,学汇编去吧。这就是为什么做逆向的需要一定的汇编知识),这些指令相当的具体,比如,把某个数从内存单元移到寄存器

编写C程序的理想化的7个步骤:

1、定义目标:这一阶段,应该用一般概念来考虑问题,而不是用一些具体语言。

2、设计程序:决定程序如何完成目标,用户界面如何,程序如何组织,目标用户是谁,时间规划。还有算法和数据结构的设计。

3、编写代码:选择编程语言(这里的话当然选C),选择开发环境(IDE?或者是编译器+文本编辑器?),代码风格,注释(不要瞧不起注释!!!)等等。

4、编译代码:这是编译器(Compiler)的工作,将源代码转化为可执行代码。 还有一个东西叫链接器(linker),他主要是将库例程引入,形成一个可以运行的可执行文件。

5、运行程序:IDE中直接点“运行” or “Run”。GCC编译器呢,在命令行中,转到该目录下,键入可执行文件名即可。例如Linux中的 “gcc hello.c -o hello.out” 然后“./hello.out”

6、测试调试:当程序运行之后的效果或结果不是所预想的时候,就要检查代码了,关于Debug,这也是一门技术。不在此继续话题

7、维护修改:程序做出来后,可能会有其他改进或者有Bug需要解决,或者添加一些其他的功能等等

编程工作不可能是这么一~条~龙下来的。根据需要在不同步骤之间来回反复。或者改变了想法,重新开始工作等等。所以,在编写代码前,先进行好规划。


想阅读更多技术文章,请访问听云技术博客,访问听云官方网站感受更多应用性能优化魔力。

关于作者

coco秋洁

我爱学习,学习使我快乐

我要评论

评论请先登录,或注册