C语言历险记

计算机语言的发展史

计算机的每一个操作都是根据人们事先指定的指令进行的.
计算机程序:一组计算机能识别的和执行的指令.
人与人交流要使用语言,人与计算机之间交流当然也需要语言,这就是计算机语言.

计算机语言在发展过程中,产生了多种语言.

计算机语言的发展过程.png

起初是 机器语言,即二进制 0 1 ,从根本上来说计算机只能识别由0 1 组成的指令. 但是机器语言 难写 难记 难修改 当然也难于推广.

为克服以上的缺点,人们创造出符号语言(symbolic language),其使用一些英文和数字表示一个指令.例如 ADD 表示 加, SUB 表示 减,ADD A,B ( 用c语言表示 就是 a = a + b),显然计算机不能直接识别和执行符号语言的指令.需要用一种称为汇编程序的软件,把符号语言指令转换为 机器指令.这个转换的过程称为汇编,因此符号语言又称为符号汇编语言或者汇编语言.其缺点:虽然比机器语言简单好记一些,但是仍然难以推广普及.且不同型号的计算机的机器语言和汇编语言是互不通用的.由于其比较贴近计算机,称为计算机低级语言.按现在的说法是 其比较贴近底层. 低级语言的一个语句 对应 一条机器指令.

为了克服低级语言的缺点,地球人创造了高级语言,目的是易推广,可维护,可移植性好,夸平台.** 高级语言的一个语句 对应 多条机器指令**

20世纪50年代 第一个计算机高级语言 FORTRAN 诞生,到目前 已经涌现了2500种以上的高级语言.

高级语言经历了不同的发展阶段:

  • (1)非结构化的语言. 初期的语言属于非结构化的语言,编程风格都随意,只要符号语法规则即可,没有严格的规范要求,程序中的流程可以随意跳转.这样 写出来的程序难以阅读和维护.早期的 BASIC FORTRAN 等都属于非结构化语言
  • (2)结构化语言.为了解决以上的问题,提出了”结构化程序设计方法”,规定程序必须由具有良好特性的基本结构(顺序结构 分支结构 循环结构)构成,程序中的流程不允许随意跳转,程序总是由上而下顺序执行各个基本结构.这种程序语言结构清晰 易于编写 阅读和维护. 常见的有 QBASIC , C
  • (3)面向对象语言.以上两种类型的语言 都是基于过程的语言,编写时需要具体制定每一个过程的细节,在编写规模较小的程序时,还能得心应手,但是在编写大型程序时就不够用了,这个时候人么提出了面向对象的程序设计方法.对象是由数据和对数据进行的操作组成的. 常见的有 c++, c# ,Visual Basic , Java,OC,Swift.

C语言的牛逼之处:

C语言是一种用途广泛 功能强大 使用灵活的过程性编程语言,即可用于编写系统软件,也可编写应用软件.其主要特点:

  • 语言简洁 紧凑 使用方便 灵活,37个关键字 9种控制语句,主要用小写字母表示
  • 运算符丰富
  • 数据类型丰富 整型 浮点型 字符型 数组类型 指针类型 结构体类型 共用体类型 复数浮点类型 超长整型 布尔类型
  • 具有结构化的控制语句
  • 语法限制不太严格 ,程序设计自由度大
  • C语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作.因此C语言既有高级语言的功能又有低级语言的许多功能,可以编写系统软件.
  • 用C语言编写的程序可移植性好
  • 生成目标代码质量高,程序执行效率高.

一个C语言程序的结构有以下特点

  • 一个程序由一个或多个源程序文件组成.即源程序文件 即是 .c文件,跟OC中的.h .m 文件一样.
  • 源程序文件中,即.c文件中,包括3个部分,1 预处理命令 2 全局声明 3函数定义,一个源程序文件就是一个程序模块.
  • 函数是C程序的主要组成部分,是其基本单位.
  • 程序总是从main函数开始执行,而不论main函数在整个程序中的位置如何.
  • 在每个数据的声明和语句后面都要有" ; ".
  • C语言本身不提供输入输出语句.输入输出的操作是由库函数scanf printf等函数来完成.
  • 程序应当包含注释.

C程序运行的步骤和方法

C语言编写的源程序,计算机不能直接识别和执行高级语言写的指令.必须用编译器把C源程序翻译成二进制形式的目标程序,然后再讲该目标程序和系统的函数库以及其他目标程序链接起来,形成可执行的目标程序.

  • 1上机输入和编辑源程序,然后保存为.c后缀的文件
  • 2 对源程序进行编译,先用C编译系统提供的 "预处理器"对程序中的预处理指令进行编译预处理.例如 #include<stdio.h>,就是将stdio.h头文件的内容读进来,由预处理得到的信息与程序其他部分一起,组成一个完整的,可以用来进行正式编译的源程序,然后由编译系统对源程序进行编译.
  • 3 进行连接处理:经过编译得到的二进制目标文件(后缀为.obj)还不能提供给计算机直接执行.因为一个程序可能包含多个源程序文件,而编译是以源程序文件为对象的,一次编译只能得到与一个源程序文件相对应的目标文件,只是整个程序的一部分.必须把所有的编译后的目标模块连接装配起来,再与函数库相连接成一个整体,最终生成一个可供计算机执行的目标程序,称为 可执行程序,在Visual C++中后缀为.exe
  • 4 运行可执行程序,得到运行结果.

小结:1 编译的作用:首先是对源程序进行检查,判定有无语法方面的错误,然后警告,开发人员修改,知道没有错误为止.这时编译程序把源程序转换为二进制形式的目标程序.
2 编译包括 预编译和正式编译2个阶段.

欢迎查看个人博客

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容