• 最近有刚开始学习编程的同学问我:“C语言是什么?C语言是怎么来的?C语言用来干什么?”。对,在学习C语言之前,首先了解C语言的发展例程,这应该是每一个刚刚开始学习C语言的人应该了解的,并且还要了解为什么要选择C语言,以及C语言都有那些特性。了解了这些知识后才会更好的学习C语言。随着计算机科学的不断发展,学习C语言的环境也在不断变化。针对前面提出的几个问题,从多方整理,下面我们从以下几点介绍C语言。

1. C语言的发展史

程序语言发展史

程序语言发展大致经历三个阶段:

1.机器语言

机器语言是低级语言,称为二进制代码语言。计算机使用的是由0和1组成的二进制数,组成的一串指令来表达计算机的语言。机器语言的特点是计算机可以直接识别,不需要任何翻译。

2.汇编语言

汇编语言是面向机器的程序设计语言。用英文字母或者符号串来代替机器语言的二进制代码,把不易理解的机器语言编程汇编语言。使用汇编语言比机器语言容易理解程序,并且更容易阅读。

3.高级语言

由于汇编语言依赖于硬件体系,并且汇编语言中的助记符号比较多。为了使程序语言更贴近人类的自然语言,同时又不依赖于计算机硬件,于是,高级语言应运而生。这种语言的语法形式类似于英文,并且因为远离对硬件的直接操作,使人们更易理解和操作。

C语言的发展史

  • 以前的操作系统等系统软件主要是用汇编语言编写的,由于汇编语言依赖于硬件,程序的可读性和可以执行都不是很好,为了提高程序的可读性和可移植性,人们期待另一种语言,这种语言具有高级语言的特性,又不失低级语言的特性,于是就产生了C语言。

  • C语言是由UNIX的开发者丹尼斯里奇(Dennis Ritchie)和肯汤普逊(Ken Thompson)于1970年在开发出的BCPL(B语言)语言的基础上发展和完善起来的。19世纪70年代初期,第一次把B语言改为C语言。

  • C语言最初运行在多用户、多任务的UNIX操作系统上。后来,Ritchie用C语言改写了UNIX C的编译程序,UNIX操作系统的开发者Ken Thompson有用C语言成功的改写了UNIX,从此开创了编程史上的新篇章。UNIX成为第一个不使用汇编语言编写的主流操作系统。

  • 1983年,美国国家标准委员会(ANSI)对C语言进行了标准化,于1983年颁布了第一个C语言草案(83 ANSI C),后来于1987年又颁布了另一个C标准草案(87 ANSI C),最新的C语言标准C99在1999年颁布,并在2000年3月被ANSI采用。但是由于未得到主流编译器厂家的支持,C99也未得到广泛应用。

  • C语言发展于大型商业机构和学术界的研究实验室,当开发者们为第一台个人计算机提供C编译系统之后,C语言就得到了广泛传播,为大多数程序员所接受。对MS-DOS操作系统来说,系统软件和实用程序都是用C语言来编写的。Windows操作系统大部分也是用C语言来编写的。

  • C语言是一种面向过程的语言,同时具有高级语言和汇编语言的优点,它可以广泛用于不同的操作系统,如UNIX、MS-DOS、Windows、Linux等。

2. C语言的特点

C语言是一种通用的程序设计语言,主要用来进行系统程序设计,具有如下特点。

  • 高效性
    从C语言的发展史可以看出,它继承了低级语言的有点,产生了高效的代码,并且具有良好的可读性和可编写性。

  • 灵活性
    C语言中的语法不拘一格,在原有语言的基础上进行创造、复合,给程序员更多的想象和发挥空间。

  • 功能丰富
    除了C语言多具有的类型外,还可以使用丰富的运算符和自定义的结构类型,来表达任何复杂的数据类型,友好的完成所需要的功能。

  • 表达力强
    C语言的语法形式与人们所使用的语言形式相似,书写形式自由、结构规范,并且其中的简单控制语句可以轻松的控制程序流程,完成复杂繁琐的程序要求。

  • 可移植性好
    C语言具有良好的可移植性,这使得C程序在不同的操作系统下,只需简单的修改或者不用修改就可以进行跨平台的程序程序开发操作。

3.编写一个简单的C程序

在学习C语言的时候,首先不要对C语言产生恐惧,C语言是人类共有的财富。只要通过努力的学习就可以掌握。

  • 一个简单的C程序
#include <stdio.h>int main()
{printf("hello world c!\n");   // 输出显示return 0;                     // 返回
}

运行程序,显示如下:

  • #include <stdio.h>
    这句话的功能是进行有关的预处理操作,include称为文件包含命令,尖括号里是内容,称为头文件。有关预处理的内容,在后续会讲解。

  • 空行
    C语言是一个比较灵活的语言,格式不是固定不变的,为了代码的整洁美观,阅读起来方便,我们可以输入任意的空格、空行,并不会影响程序的执行。

  • int main()
    main函数为一个返回整型的函数,其中int叫做关键字,这个关键字代表的类型为整型。关于关键字后续会讲解。main函数是程序的入口函数,每一个程序都会有一个main函数,也就是说每一个程序都是从main函数开始执行的。上面代码就是进入到main函数,先执行printf,再执行return语句。

4. C语言程序的格式

  • 通过上面的简单C程序可以看书,C语言编写有一定的格式
  1. 主函数main
    C语言是从main函数开始执行,main函数可以放在文件的任意位置

  2. 程序的主体是由函数构成的
    程序中main就是主函数,当然可以定义自己的函数,在函数中进行特定的操作,完成特定的功能。

  3. 函数体的内容在{}内
    每个函数的函数体都要用{}括起来,函数可以有返回值return 0,也可以没有返回值。

  4. 每条语句以;结束
    如果一条语句写完后要以;结尾。

至此,通过上面的介绍,相比对C语言有了一个基本的认是,那么在后续的学习中有一定的帮助。当然,对于初学者来说有些属于还不是很理解,这都没有关系。在下面的教程中我们将逐步深入到C语言,学习C语言的基本语法和知识。

添加公重号:Linux兵工厂,获取海量Linux硬核资料。

带你打开C语言的大门相关推荐

  1. long long c语言_带你打开C语言的大门之C语言的变量

    什么是变量,我们看名字就能知道,能改变的量就是变量,C语言的变量就是程序在运行时候的值能改变的量,我们称为变量. 怎么来记忆变量的语法呢?我们根据这么一个例子来做改变, 变量比做一个酒店,那我们对应的 ...

  2. 【C初阶】第一篇——初识C语言(万字篇,带你敲响C语言的大门)

    接受平凡,努力出众,承认普通,但拒绝沉沦于平庸.大家好,我是你们的老朋友,小KK.  满满的 ​前言 ​什么C语言? ​数据类型 ​变量和常量 ​定义变量的方法 ​变量的分类 ​变量的作用域和生命周期 ...

  3. 【C初阶】——初识C语言(万字篇,带你敲响C语言的大门)

    接受平凡,努力出众,承认普通,但拒绝沉沦于平庸.大家好,我是你们的老朋友,小KK. 满满的 ?前言 ?什么C语言?? ?数据类型?? ?变量和常量?? ?定义变量的方法?? ?变量的分类??

  4. Webpack5快速入门 (二) CSS相关loader的使用及兼容性处理 手把手带你打开前端工程化的大门

    目录 一.CSS-Loader

  5. java编程石头剪刀布图片_石头、剪刀、布!10分钟带你打开深度学习大门,代码已开源...

    原标题:石头.剪刀.布!10分钟带你打开深度学习大门,代码已开源 沉沉 发自 宇宙中心 量子位 出品 | 公众号 QbitAI 深度学习技术的不断普及,越来越多的语言可以用来进行深度学习项目的开发,即 ...

  6. 还不会ts?一文带你打开ts的大门

    一文带你打开ts的大门 序言 一.什么是TypeScript? 1.编程语言的类型 2.TypeScript究竟是什么? 二.为什么要学习TypeScript? 1.程序更容易理解 2.效率更高 3. ...

  7. windowopen怎么不打开新网页_断舍离!闲置物品怎么办?带你打开泰国二手世界新大门!...

    原标题:断舍离!闲置物品怎么办?带你打开泰国二手世界新大门! 编辑/Sunny 据说觉得运势不顺的时候改动身边的东西能引起磁场变化从而改变风水带来好运,最近城主热衷倒腾家装,换了一波家里的家具感觉心情 ...

  8. 打开Redis数据库的大门

    打开Redis数据库的大门 文章目录 打开Redis数据库的大门 1.Redis是什么? 2.Redis特点: 单线程为何如此快? 3.redis 对比 memcached 4.redis 典型应用场 ...

  9. 一文带你入门go语言

    一文带你入门go语言 go/golang是一门google开发的编程语言,其代码简洁易读,天生支持并发,完美契合当今互联网生态. 目前Go语言已经⼴泛应用于人工智能.云计算开发.容器虚拟化.⼤数据开发 ...

最新文章

  1. 【camera】自动驾驶感知系统实现(车道线检测和拟合、目标检测与跟踪、道路可行驶区域分割、深度估计、图像视野到BEV空间映射、像平面到地平面映射)
  2. @PropertySource读取外部配置文件中的k-v保存到运行的环境变量中,加载完微博的配置文件以后使用${}取配置文件中的键值
  3. python数组展示_python如何显示数组
  4. html复制文字兼容手机,JavaScript+Html5实现按钮复制文字到剪切板功能(手机网页兼容)...
  5. CF1062E Company
  6. python的网络编程学什么_【Python学习】网络编程
  7. linux正则表达式脚本实例,Shell下的正则表达式及实例
  8. Java8 Stream 流使用场景和常用操作
  9. vue 表单验证 支持6位小写字母和数字组合,必须包含2位字母
  10. CSDN 输入公式的方法
  11. was升级jdk版本_was升级jdk1.7
  12. 抖音直播可以看全场回放了?怎么进行有效复盘?
  13. 魅族mx5无法连接远程服务器,魅族mx5手机无法连接电脑怎么办
  14. Android 地图标识标签
  15. 架构师培训:aop是什么
  16. CHARISMA平台采用J2EE技术构建,MVC设计模式
  17. 信息怎样开4g移动网络连接服务器,怎么强制手机只连接4G网络?
  18. matlab中提示m文件不在current folder下(实际上在)
  19. CRB开发-列表视图按钮添加
  20. Oracle(二)Oracle sql操作

热门文章

  1. The 3rd SMUCTF Office WriteUp
  2. 服务器系统登录ilo,华为服务器ILO默认地址
  3. gcc 中-O -O1 -O2 -O3 -Os -Ofast -Og优化的原理
  4. 【小迪安全】web安全|渗透测试|网络安全 | 学习笔记-5
  5. android版手机qq 5.0,手机QQ5.0安卓版今日正式发布 手机QQ5.0更新升级内容介绍
  6. ArcGIS基础知识之shape文件的构成
  7. guava实现MD5加密
  8. Python爬虫(第三周)
  9. 在职研究生(多重继承)
  10. 数据相关的在职研究生_又一所双一流大学给予部分博士研究生退学处理,至少33名!...