因为我的C语言学的实在是太差了,🤯要不是老师手下留情甚至上次期末就挂科了,然后这学期的C++课程也结束了,开学就要考试,暑假估计也没事做,所以准备系统地学习比较基础的一门语言——就从C语言开始吧!🐱‍🏍

C语言概述

C语言是一种通用的、面向过程的计算机程序设计语言,具有高效灵活功能丰富表达力强和较高的可移植性等特点,它最初是1972年,贝尔实验室的丹尼斯·里奇(Dennis Ritch)和肯·汤普逊(KenThompson)为了移植和开发UNIX操作系统,以B语言为基础,在贝尔实验室设计、开发出来的。

因为C语言所产生的代码运行速度非常接近于汇编语言编写的代码的运行速度,所以C语言最初用于系统开发工作,尤其是组成操作系统的程序。Microsoft Windows、macOS、Linux、Unix等操作系统的很多底层都或多或少都使用了C语言编写,并且C语言对后来众多的编程语言:C++、Objective-C、Java、C#等都有一些影响。并且像FORTRAN、Perl、Python、Pascal、LISP、Logo、BASIC等语言的编译器或解释器都是由C语言编写。

C标准

K&R C

1978年,丹尼斯·里奇布莱恩·柯林汉合作出版了《C程序设计语言》的第一版。书中介绍的C语言标准也被C语言程序员称作“K&R C”(中文简称:柯里C),第二版的书中也包含了一些ANSI C的标准。

K&R C主要引入了一下语言特性:

  • 标准I/O库
  • srtuct类型
  • long int类型
  • unsigned int类型
  • 将运算符=+=-改为+=-=(因为前者会使编译器处理上产生混淆)

ANSI C(C89)

1989年,为避免各开发厂商使用不同C语言语法而产生的差异,美国国家标准学会(American National Standards Institute,简称ANSI)制订了一套完整的C语言国际标准语法——ANSI C,编号为ANSI X3.159-1989,这个版本也被称为C89。

在标准化的同时,拓展了K&R C并且增加了一些新特性:

  • void函数
  • 函数返回struct/union类型
  • void数据类型

ISO C(C90)

1990年,国际标准化组织(ISO)在ANSI C标准上进行少量修改,最终制定了ISO 9899:1990规范的C语言国际标准,这个版本也被称为C90。

在之前C语言国际化标准上做的改进有:

  • 增加了真正的标注库
  • 新的预处理命令和特性
  • 函数圆弧形允许在函数中指定参数类型
  • 新的关键字:const、volatile和signed
  • 宽字符、宽字符串和多字节字符

在1994年,又做了以下改进:

  • 3 个新的标准库头文件 iso646.h、wctype.h 和 wchar.h
  • 几个新的记号与预定义宏,用于对国际化提供更好的支持
  • printf/sprintf 函数一系列新的格式代码
  • 用于多字节字符和宽字节字符的大量的函数和一些类型与常量

C99

在ANSI的标准确立后,C语言的规范在一段时间内没有大的变动,然而C++在自己的标准化创建过程中继续发展壮大。《标准修正案一》在1994年为C语言创建了一个新标准,但是只修正了一些C89标准中的细节和增加更多更广的国际字符集支持。不过,这个标准引出了1999年ISO 9899:1999的发表。它通常被称为C99。C99被ANSI于2000年3月采用。

C11

2011年12月8日,ISO正式发布了新的C语言的新标准C11,之前被称为C1X,官方名称为ISO/IEC 9899:2011。新的标准提高了对C++的兼容性,并增加了一些新的特性。这些新特性包括泛型、多线程、带边界检查的函数、匿名结构等

C18

对C11进行了补充和修正

C2x

引入了一些新特性,将有望成为下一个C语言的ISO标准,在其最新标准草案C2x标准将加入符合IEEE标准的十进制浮点数],这使得计算机能够精确地储存浮点数。

C语言结构

C程序组成

一个C程序主要组成部分为:

  • 预处理指令
  • 函数
  • 变量
  • 语句/表达式
  • 注释

以C语言的第一个程序”Hello World!“为例:(”//“后面的内容在此处是说明,后面会使用标准的C语言的注释)

1
2
3
4
5
6
7
#include<stdio.h>  // 预处理指令
int main() // int main()是主函数,程序从这开始执行
{
printf("Hello, World!\n"); // printf()函数,打印输出"Hello,Wolrd!"
return 0; // 终止main()函数,并返回0
}
/* 第一个C程序:"Hello World!" */ // 由"/*...*/"包裹起来的这部分是注释内容

在可以编译运行C语言的IDE里编译运行,第一个C程序输出为:

C编写理想步骤

把编写C语言的过程分为以下步骤:

这是理想状态下的步骤,在实际使用过程中,尤其是在较大型的项目中,可能要做一些重复的工作或者根据下一个步骤的情况来调整或改进上一个步骤。

参考资料