什么是C
C 语言是一种通用的高级语言,1972年,贝尔实验室的丹尼斯·里奇(Dennis Ritch )和肯·汤普逊(Ken Thompson )在开发UNIX操作系统时设计了C语言。
在 1978 年,布莱恩·柯林汉(Brian Kernighan)和丹尼斯·里奇(Dennis Ritchie)制作了 C 的第一个公开可用的描述,现在被称为 K&R 标准。
C语言是可移植方面的佼佼者。从8位微处理器到克雷超级计算机,许多计算机体系结构都可以使用C编译器(C编译器是把C代码转换成计算机内部指令的程序)。
C语言广泛应用于以下开发场景:操作系统、语言编译器、汇编器、文本编辑器、后台打印服务(Print Spooler)、网络驱动器、现代程序、数据库、语言解释器、实体工具
C语言优点
- 易于学习。
- 结构化语言。
- 它产生高效率的程序。
- 它可以处理底层的活动。
- 它可以在多种计算机平台上编译。
关于C
- C 语言是为了编写 UNIX 操作系统而被发明的。
- C 语言是以 B 语言为基础的,B 语言大概是在 1970 年被引进的。
- C 语言标准(
ANSI/ISO
、C89
、C90
、ANSI C
)是于 1989 年由美国国家标准协会ANSI(American National Standard Institute)制定的。 - 截至 1973 年,UNIX 操作系统完全使用 C 语言编写。
- 目前,C 语言是最广泛使用的系统程序设计语言。
- 大多数先进的软件都是使用 C 语言实现的。
- 当今最流行的 Linux 操作系统和 RDBMS MySQL 都是使用 C 语言编写的。
C语言标准
C89/C90
美国国家标准协会(ANSI)于1983年组建了一个委员会(X3J11),开发了一套新标准,并于1989年正式公布。该标准(ANSI C)定义了C语言和C标准库。国际标准化组织于1990年采用了这套C标准(ISO C)。ISO C和ANSI C是完全相同的标准。ANSI/ISO标准的最终版本通常叫作C89(因为ANSI于1989年批准该标准)或C90 (因为ISO于1990年批准该标准)。另外,由于ANSI先公布C标准,因此业界人士通常使用ANSI C。
在该委员会制定的指导原则中,最有趣的可能是**:保持C的精神**,委员会在表述这一精神时列出了以下几点:
- 信任程序员;
- 不要妨碍程序员做需要做的事;
- 保持语言精练简单;
- 只提供一种方法执行一项操作;
- 让程序运行更快,即使不能保证其可移植性。
C99
1994年,ANSI/ISO联合委员会(C9X委员会)开始修订C标准,最终发布了C99标准。
C11
标准委员会在2007年承诺C标准的下一个版本是C1X,2011年终于发布了C11标准。
C程序
编写C程序的步骤
- 定义程序的目标:在动手写程序之前,要在脑中有清晰的思路。想要程序去做什么首先自己要明确自己想做什么,思考你的程序需要哪些信息,要进行哪些计算和控制,以及程序应该要报告什么信息。在这一步骤中,不涉及具体的计算机语言,应该用一般术语来描述问题。
- 设计程序:对程序应该完成什么任务有概念性的认识后,就应该考虑如何用程序来完成它。例如,用户界面应该是怎样的?如何组织程序?目标用户是谁?准备花多长时间来完成这个程序?
- 编写代码:设计好程序后,就可以编写代码来实现它。也就是说,把你设计的程序翻译成C语言。这里是真正需要使用C语言的地方。可以把思路写在纸上,但是最终还是要把代码输入计算机。
- 编译:生成一个用户可以运行的可执行文件,其中包含着计算机能理解的机器码。编译器还会检查C语言程序是否有效。如果C编译器发现错误,就不生成可执行文件并报错。
- 运行程序:运行可执行程序。
- 测试和调试程序:检查程序是否按照你所设计的思路运行。
- 维护和修改代码:创建完程序后,你发现程序有错,或者想扩展程序的用途,这时就要修改程序。
HelloWorld
一个 C 语言程序,可以写在一个或多个扩展名为 .c
的文本文件中,例如,hello.c
#include <stdio.h>
int main()
{
/* 我的第一个 C 程序 */
printf("Hello, World! \n");
return 0;
}
基本结构
- 所有的 C 语言程序都需要包含
main()
函数。 代码从main()
函数开始执行。 /* */
:用于注释说明。printf()
:用于格式化输出到屏幕。printf()
函数在stdio.h
头文件中声明。stdio.h
:是一个头文件 (标准输入输出头文件) ,#include
是一个预处理命令,用来引入头文件。 当编译器遇到printf()
函数时,如果没有找到stdio.h
头文件,会发生编译错误。return 0;
:用于表示退出程序。
工程、项目
程序是一个比较宽泛的称呼,它可以细分为很多种类,例如:
- 有的程序不带界面,完全是“黑屏”的,只能输入一些字符或者命令,称为控制台程序(Console Application),例如 Windows 下的 cmd.exe,Linux 或 Mac OS 下的终端(Terminal)。
- 有的程序带界面,看起来很漂亮,能够使用鼠标点击,称为GUI程序(Graphical User Interface Program),例如 QQ、迅雷、Chrome 等。
- 有的程序不单独出现,而是作为其它程序的一个组成部分,普通用户很难接触到它们,例如静态库、动态库等。
不同的程序对应不同的工程类型(项目类型),使用 IDE 时必须选择正确的工程类型才能创建出我们想要的程序。换句话说,IDE 包含了多种工程类型,不同的工程类型会创建出不同的程序。
不同的工程类型本质上是对 IDE 中各个参数的不同设置;我们也可以创建一个空白的工程类型,然后自己去设置各种参数(不过一般不这样做)。
控制台程序对应的工程类型为Win32控制台程序(Win32 Console Application),GUI 程序对应的工程类型为Win32程序(Win32 Application)。
基本语法
标记(Tokens)
C 程序由各种标记组成,标记可以是关键字、标识符、常量、字符串值,或者是一个符号
printf('Hello World!');
printf // 标识符
( // 符号
"Hello, W3Cschool! \n" // 字符串值
) // 符号
; // 分号是语句结束符
在 C 程序中,分号是语句结束符。也就是说,每个语句必须以分号结束。它表明一个逻辑实体的结束。
注释
//C99新增了这种风格的注释,普遍用于C++和Java。这
/*
多行
注释
*/
标识符
- C 标识符是用来标识变量、函数,或任何其他用户自定义项目的名称。
- 一个标识符以字母
A-Z
或a-z
或下划线_
开始,后跟零个或多个字母、下划线和数字(0-9
)。 - C 标识符内不允许出现标点字符,比如
@
、$
和%
。 - C 是区分大小写的编程语言。
关键字
下表列出了 C 中的保留字。这些保留字不能作为常量名、变量名或其他标识符名称。
auto | else | long | switch |
---|---|---|---|
break | enum | register | typedef |
case | extern | return | union |
char | float | short | unsigned |
const | for | signed | void |
continue | goto | sizeof | volatile |
default | if | static | while |
do | int | struct | _Packed |
double |