《C Primer Plus》- 第一章 初试C语言
本笔记写于2020年1月25日。
从今天开始,我要全面的、彻底的将未来计划中所有的知识重新规划学习一遍,并整理成一套全面的笔记体系。为我将来的职业打下坚实的基础。而所有的一切从C语言开始。
本系列文章参考的是《C Primer Plus》(第六版),其中会有笔者自己的相关补充。
PS:如果笔记中有任何的错误,请在下方评论中留言,我会及时回复并修改,谢谢
C语言简介
1972年,贝尔实验室的Dennis Ritch和Ken Thompson两人在开发Unix操作系统时设计了C语言。
C语言发明已有近50年的时间了,但它仍然是计算机行业中最重要、最流行的编程语言之一。虽然有很多人都从C语言转而使用其他编程语言,但C语言仍然凭借其自身实力在众多编程语言中有着极高的地位。
C语言特性
优点
强大的设计特性:自顶向下的规划、结构化编程和模块化设计
高效性:C语言是现今执行速度最快的编程语言之一
可移植性:在一种系统中编写的C程序稍作修改或不修改就能在其他系统运行。
笔者补充:C语言的可移植性与Java不同,Java由于JRE的存在,因此是“一次编译,到处运行”。而C语言的可移植性主要是针对C代码来说的。C语言是现今操作系统的主流语言,因此各大操作系统中都内置了C语言编译器。同时,C语言在业内有着一套全面的标准,因此,C语言本身有着高度的统一性,C代码在各个机器上都可以编译运行。但如果在代码中使用了操作系统提供的特定API,C语言便不存在可移植性了
功能强大:不用说
灵活度高:指针的存在为程序员直接操作内存提供了工具
缺点
危险性高:指针的强大既是C语言的强大之处,也是C语言的危险之处
开发周期长:面对现如今繁杂的世界,C语言面向过程的特性使得其开发周期过长
高级计算机语言和编译器
现代计算机由多个部件构成。其中,CPU作为运算部件,通过执行存储器中的指令来完成相应的功能。而指令(指令的集合便是CPU对应的指令集)是存储在内存中的一串由0和1组成的二进制数字,CPU通过解析这串01数串来完成相应的操作,这串01数串就是机器语言。
由于01数串非常难以记忆和阅读,人们发明了一些助记符来辅助记忆这些数串,例如:定义数串010000的含义为加,其对应的助记符为add,这些助记符便是汇编语言。
汇编语言的发明提高了程序的可阅读性,但并不符合人类的思维方式,因此人们发明了高级编程语言。高级编程语言在汇编语言的基础上提供了更高一级的抽象,使其更加符合人类的思维方式,例如:进行两数相加操作,可以直接写成sum = a + b,极大的提高了编程效率。
但是,高级编程语言是计算机无法直接理解的,计算机能直接理解的只有机器语言,因此需要将高级编程语言转化为机器语言,这种转化便是通过编译器完成的。同时,编译器还有一个优点,在最初机器语言设计时,由于没有一个共同的标准,各大CPU制造商使用的指令集是不同的,使用编译器可以将一种高级语言程序转换成不同指令集的机器语言,使得高级语言不受特定CPU或指令集的限制。
语言标准
K&R C或标准C
1978年,Brian Kernighan和Dennis Ritchie两个合著了The C Programming Language(第一版),本书中阐述的C语言被称为K&R C或标准C。但本书并没有定义C语言的标准库。
C89/C90
随着C语言的不断发展,C社区越来越希望有一个全面、严格的标准,因此,美国国家标准协会(ANSI)于1983年组建了一个委员会,开始制定C语言新的标准,并于1989年发布。同时,国际标准化组织(ISO)于1990年决定采用这套标准。这套标准定义了C语言和C标准库。
笔者补充:实际上常见说的包括C89、C90、ANSI C和ISO C这4个名词都指的是同一套标准。同时,ISO在1995年时曾发布过一个关于C89的修订版,但由于该版中对C89增添了一些新特性以适应时代的发展,因此也有不少人认为这个修订版也应该作为一个C语言的标准,并将其称之为C95,但其官方名称一直都是为C89 with Amendment 1
C99
ANSI/ISO联合委员会于1994年开始制定新一套的C语言标准,并最终于1999年发布了C99标准。该标准的发布使得C语言更好符合时代的发展,C99标准也成为了目前使用最广泛的C语言标准。
C11和C17
C11标准于2011年12月8日发布,增添了部分新特性并提高了对C++的兼容性。C17标准于2018年提出,因此也有人称为C18标准,该标准中并没有引入新的特性,只是对C11标准进行了一定的修补
编程机制
图中注释已经描写的比较清楚,这里不再赘述。

《C Primer Plus》- 第一章 初试C语言的更多相关文章
- C++ Primer Plus 第一章 预备知识
C++ Primer Plus 第一章 预备知识 知识点梳理 本章主要讲述了C++的由来,讨论了面向过程语言与面向对象语言的区别,介绍了ANSI/ISO制定的C++标准,阐述了在Windows.Mac ...
- Java 学习笔记 第一章:Java语言开发环境搭建
第一章:Java语言开发环境搭建 第二章:常量.变量和数据类型 第三章:数据类型转换.运算符和方法入门 1.Java虚拟机——JVM JVM(Java Virtual Machine ):Java虚拟 ...
- 第一章 初始C语言
第一章 初始C语言 目录 第一章 初始C语言 1. C语言起源 2. 选择C语言的理由 2.1 设计特性 2.2 高效性 2.3 可移植性 2.4 强大而灵活 2.5 面向程序员 3. C语言的应用范 ...
- 第一章:Javascript语言核心
本节是javascript语言的一个快速预览,也是本书的第一部分快速预览. 读此书之前,感谢淘宝技术团队对此javascript核心的翻译,感谢弗拉纳根写出此书.感谢你们无私的分享,仅以此笔记献给你们 ...
- C++ Primer 笔记 第一章
C++ Primer 学习笔记 第一章 快速入门 1.1 main函数 系统通过调用main函数来执行程序,并通过main函数的返回值确定程序是否成功执行完毕.通常返回0值表明程序成功执行完毕: ma ...
- C++ primer的第一章的主要内容
第一章主要是把C++的主要的部分简单的介绍了一下,让读者对C++开始有一个简单的了解.看完第一章的收获就是知道如何去读入不确定数目的输入,主要是形式是:whlie(cin>>s){},利用 ...
- 《自学C语言》第一章:C语言简介
这一章主要介绍什么是C语言,以及它的产生.发展历史.如其中所说的计算机术语有不懂的请百度,例如什么是强类型,什么是高级语言. 1.C语言是什么? 答:C语言是一门通用计算机编程语言,应用广泛.C语言的 ...
- 第一章 Python程序语言简介
第一节 Python概述 1. 什么是Python Python是一种 解释型.面向对象.动态数据类型 的高级程序设计语言.由Guido van Rossum与1989年发明,第一个公开发行版本发行于 ...
- 《大道至简》第一章读后感--JAVA语言伪代码形式
import.java.大道至简.*; //一·愚公移山 import.java.愚公移山.*; public class YuGongYiShan { //原始需求:惩山北之塞,出入之迂 //项目沟 ...
随机推荐
- Javascript获取当前鼠标在元素内的坐标定位
代码如下: <!doctype html> <html> <head> <meta charset="utf-8"> <tit ...
- ssh服务启动失败 /var/empty must be owned by root and not group or world-writable.
输入 /etc/rc.d/init.d/sshd start 启动sshd服务,报如下错误: /var/empty must be owned by root and not group or wor ...
- jQuery通过name获取值
使用jQuery获取name="day"的input对象: 方法1 var dayObj=$('input[name="day"]'); for(int i=0 ...
- 微信小程序调用用百度地图天气功能
#小程序之调用百度地图天气功能 本篇博客主要介绍小程序在百度地图中获取天气信息,如有不全请指出.下面先上效果图 主要内容 百度地图API的个人密钥,也就是AK 请求百度地图API接口数据 获取到的信息 ...
- 第四篇:Vue的项目开发
安装Vue的脚手架cli环境 1)官网下载并安装node,附带npm https://nodejs.org/zh-cn/ node环境: 可以解释执行js语言 提供了npm应用商城,可以为node环境 ...
- windows平台上运行Flink_转载于CSDN
Flink安装部署-window 本地部署原创冰上浮云 发布于2019-08-17 15:56:06 阅读数 633 收藏分类专栏: flink版权声明:本文为博主原创文章,遵循 CC 4.0 BY- ...
- 1-Java类结构和main函数
目录 Java类 main函数 1.Java类 - 类是java中最基础的逻辑单位 java中所有的内容都要放在类的范围中 - 类的构成 成员变量/属性 成员方法/函数 - java文件必须以.jav ...
- 【CS224n-2019学习笔记】Lecture 1: Introduction and Word Vectors
附上斯坦福cs224n-2019链接:https://web.stanford.edu/class/archive/cs/cs224n/cs224n.1194/ 文章目录 1.课程简单介绍 1.1 本 ...
- HDU 4915 多校5 Parenthese sequence
比赛的时候想了一个自认为对的方法,WA到死,然后还一直敲下去,一直到晚上才想到反例 找是否存在解比较好找,这种左右括号序列,把(当成1,把)当成-1,然后从前往后扫,+1或者-1 遇到?就当初(,然后 ...
- Open_CV 色彩空间
色彩空间: 颜色空间按照基本结构可以分两大类:基色颜色空间 和 色.亮分离颜色空间.前者的典型是 RGB,还包括 CMY.CMYK.CIE XYZ 等:后者包括 YCC/YUV.Lab.以及一批“色相 ...