设为首页 加入收藏

TOP

0X01 概览
2017-10-12 11:37:23 】 浏览:2871
Tags:0X01 概览

交待了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需要解决,或者添加一些其他的功能等等

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

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇开始我的blog之旅 下一篇Java中随机数的产生方式与原理

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目