码迷,mamicode.com
首页 > 编程语言 > 详细

C语言(一):初始C语言

时间:2017-10-28 15:30:24      阅读:370      评论:0      收藏:0      [点我收藏+]

标签:汽车   允许   win   高级编程   修改   写代码   font   file   就是   

  学习笔记:

  •    C的历史和特性
  •             编写程序的步骤
  •             编译器和链接器的一些知识
  •             C的标准

        1.1 C语言之起源

  1972年,在美国的贝尔实验室内的丹尼斯·里奇(Dennis Ritch)和肯·汤姆逊(Ken Thompson)在开发Unix操作系统时发明了C语言,然而,在C语言的设计之中它并不是一个独立的思路设计,它是在基于B语言的基础上来进行设计的,至于B语言的起源,可以参考B语言的起源,C语言的设计初衷是为了给程序员使用的一个编程工具,其主要目标是成为有用的语言。

      技术分享

    1.2 选择C语言编程的理由

  在过去40年里,C语言成为最流行、最重要的编程语言之一,在10大最受欢迎编程语言排行榜中,经常与Java语言进行第一第二的排名争抢,不是第一就是第二,它的成长主要归纳于对于使用过它的人对该语言都很满意,过去的20年里,虽然许多人都从C语言转向其他编程语言(如:C++ Objective-C Java等),但是C语言却依旧凭借本身的实力在众多语言中脱颖而出。

      1.3 C语言的特性(优点)

  •    C语言是一门流行的语言,融合了计算机科学理论和实践的控制特性。C语言的设计概念让用户能轻松的完成自顶向下的规划、结构化编程和模块化设计。因此,用C语言写的程序更简单易懂、更可靠。
  •       C语言是一门高效的语言,在设计上,它充分的利用了当前计算机的优势,因此对于C语言程序的设计更加的紧凑,而且运行速度很快,实际上,C语言具有通常是汇编语言才具有的微调控制能力(汇编语言是为特殊的中央处理单元设计的一系列内部指令,使用助记符来表示;不同的CPU系列使用不同的汇编语言。
  •       C是可移植的语言,这意味着,在一种操作系统中编写的C语言程序稍作修改或不修改就能在其他操作系统中运行;打个比方,你在Windows操作系统中用VC或者VS设计了一个helloworld的C语言程序,你也可以把它放到Linux或者Unix系统去执行,且不会报错,不过,部分程序也只是需要更改主程序头文件中的少许项即可,大部分语言都希望成为可移植的语言,C语言是可移植性语言的佼佼者。
  •       C语言功能强大且灵活(在计算机领域或者黑客 or 渗透领域经常使用这两个名词),例如:功能强大且灵活的Unix系统,大部分都是由C语言编写的;其他语言(如:FORTRANPerlPythonPascalLISPLogoBASIC)内部的解释器和编译器大部分都是由C语言来编写的。因此,在Unix中使用FORTRAN时,最终是由C程序生成最后的可执行程序。C语言可以用来解决物理学和工程学的问题,甚至用来编写电影的特效加持。
  •       C语言是为了满足程序员的要求而设计的,程序员可以利用C语言来访问计算机硬件、操控内存中的位。C语言有丰富多彩的运算符,能让程序员快速简介的表达自己的意图。C语言虽然没有Pascal严谨,但是却比C++的限制多;这样的灵活性即是优点也是缺点。优点是:许多任务用C语言来处理都特别的简洁(如:转换数据的格式);缺点是:你可能会犯一些莫名其妙的错误,这些错误不太可能会在其他语言中出现。C语言在提供更多自由的同时,也让使用者承担了更大的责任,另外,C语言还有自带了很多函数的库,需要用#include主函数进行调用才能让函数运行。

                   1.4 C语言的应用范围

  •     公司内部编程大多数采用的是C语言
  •      操作系统的开发也基本上是使用的C语言
  •      编程语言开发(如Python蟒蛇语言就是C语言设计的)
  •      图形化程序开发(C语言开发图形化程序更加高效快捷)
  •      人工智能设计(人工智能大多数用到的是汇编或者C语言进行的)
  •      汽车安全设计(内部的程序也基本上是C语言编写的)
  •      Linux内核(C语言编写)
  •      Unix操作系统(C语言编写)
  •      Windows操作系统(C语言编写,大部分似乎是由C++或者汇编语言编写,但也有少部分是用C语言来编写的)
  •      计算机游戏开发
  •      PC端应用程序
  •      机器人工厂
  •      星球大战电影特效
  •      嵌入式系统开发
  •      卢卡斯公司

          1.5 计算机工作原理

   现代的微型计算机主要是由多种内部构架组成:中央处理单元(CPU)承担了大部分的运算工作。随机存储内存(RAM)是存储程序和文件的工作区;而永久内存存储设备(过去主要指一些机械硬盘,现在还包括固态硬盘比如一些SSD等)即便关闭计算机后,存储后的数据或者文件也不会丢失,另外,还有一些外设(键盘、鼠标、触摸屏、监视器)提供人与计算机之间的交互。CPU主要负责处理程序。

      CPU的工作非常简单,它从内存中获取并执行一条指令,然后再从内存中获取并执行下一条指令,诸如此类(一个GHz的CPU一秒钟能重复这样的操作约十亿次,因此,CPU能以惊人的速度来重复进行枯燥乏味的工作,CPU有一个自己的工作区-由若干个寄存器组成,每个寄存器都可以存储一个数字。一个寄存器储存下一条指令的内存地址,CPU使用该地址来获取和更新下一条指令。在获取指令后,CPU在另一个寄存器中储存该指令,并更新第一个寄存器储存下一条指令的地址。CPU能理解的指令有限,(这些指令的集合叫做指令集。)而且,这些指令相当具体,其中的许多指令都是用于请求计算机把一个数字从一个位置移动到另一个位置。

    储存在计算机中的所有内容都是数字。计算机以数字形式储存数字和字符(如,在文本文档中使用的字符。)每个字符都有一个数字码。计算机载入寄存器的指令也以数字型式储存,指令集的每条指令都有一个数字码(即:机器语言)来表示。

       简而言之,计算机的工作原理是:如果你希望计算机做某些事,就必须为其特殊的指令列表(程序),确切的告诉计算机要做的事以及如何做,你必须用计算机能直截了当明白的语言(机器语言)来创建程序。这是一项:繁琐、乏味、费力的任务。计算机要完成诸如两数相加这样简单的事,就得分类成类似以下的步骤。

  • 从内存位置2000上把一个数字拷贝到寄存器1
  • 从内存位置2004上把另一个数字拷贝到寄存器2
  • 把寄存器2中的内容与寄存器1的内容相加,把结果寄存在寄存器1中
  • 把寄存器1中的内容拷贝到内存位置2008

             1.6 高级计算机语言和编译器

   高级编程语言(如:C)以许多的方式简化了编程工作,首先,不必用数字码表示指令,也不用考虑CPU在完成任务时具体需要那些步骤。

   total = mine +yours;

     我们用上面的变量来举例,只需要看一下这个例子就知道编程语言想要做什么,而如果看成机器语言写成的等价指令(多条以数字码形式表现的指令)则费劲得多。但是,对于计算机语言而言却恰恰相反。在计算机看来,高级指令就是一堆无法理解的无用数据。所以,编译器在这里就派上了用场。编译器的作用是把高级语言的程序指令翻译成了计算机内部所能理解的机器语言指令集的程序(二进制),程序员进行高级思维活动,而编译器则负责处理冗长乏味的细节工作。

         1.7 语言标准

   C语言的发展之初,并没有所谓的C语言标准,在1978年,布莱恩·柯林汉(Brian Kernighan)和丹尼斯·里奇(Dennis Ritchie)合著的The C Programming Language(C语言程序设计)第一版是公认的C标准,通常称之为K&RC或经典C。与大多数语言不同的是,C语言比其他语言更依赖库,因此需要一个标准库,实际上,由于缺乏官方标准,Unix实现提供的库已经成为了标准库。

       1.8 C语言的一些标准 

  • ANSI/ISO C标准
  • C99标准
  • C11标准

       1.9 使用C语言的7个步骤

  • 定义程序的目标
  • 设计程序
  • 编写代码
  • 编译
  • 运行程序
  • 测试和调试程序
  • 维护和修改程序

       2.0 编程机制

  生成程序的具体过程因计算机环境而异。C是可移植性语言,因此可以在许多环境中使用,包括:UnixLinuxMS-DOS(一些人仍在使用)、WindowsMacintosh OS,有些产品会随着时间的推移发生演变或取代;用C语言编写程序时,编写的内容被储存在文本文件中,该文件被称为源代码文件(source code file)。大部分C系统,包括之前提到的,都要求以.c结尾(如:wordcount.c和hello.c),在文件中,点号前面的被称之为基本名(basename),点号后面的为扩展名(extension)。因此,文件名应该满足特定计算机操作系统的特殊要求,如:在MS-DOS环境下比较老旧,它要求基本名不能超过8个字符。因此,刚才提到的wordcount就是无效的DOS文件名;有些Unix系统则允许使用更长的文件扩展名不超过14个字符,而有些Unix系统则允许使用更长的文件名,最多255个字符,Linux、Windows和Macintosh OS都允许使用长文件名。

  C语言编程的基本策略是,用程序把源代码文件转换为可执行文件,典型的C实现通过编译链接两个步骤来完成这一过程。编译器把源代码转换成中间代码,链接器把中间代码和其他代码合并,生成可执行文件。C使用这种分而治之的方法方便对程序进行模块化,可以独立单独编译的模块,稍后再用链接器合并已编译的模块,通过这种方式,如果只更改某个模块,不必因此重新编译其他模块,另外,链接器还将你编写的程序和预编译的库代码合并。

    简而言之,目标代码可执行文件都是由机器语言指令组成的。然而,目标文件中只包含编译器为你编写的代码翻译的机器语言代码,可执行文件中还包含你编写的程序中使用的库函数和启动代码的机器代码。

           

 

C语言(一):初始C语言

标签:汽车   允许   win   高级编程   修改   写代码   font   file   就是   

原文地址:http://www.cnblogs.com/HackKen/p/7746875.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!