1. C语言的前世今生
1972年,贝尔实验室的丹尼斯·里奇在开发UNIX操作系统时创造了一种全新的编程语言。这个看似偶然的发明,后来成为了计算机科学史上最重要的里程碑之一。C语言的设计哲学是"信任程序员"——它提供了直接操作内存的能力,同时保持了足够的高级语言特性。这种独特的平衡使得C语言既能用来编写操作系统内核,又能开发各种应用程序。
有趣的是,C语言的"祖先"B语言其实得名于BCPL(Basic Combined Programming Language),而C语言这个名字只是B语言的简单继承。里奇曾开玩笑说,如果按照字母顺序,下一代语言应该叫P语言,但历史选择了C++这个更有创意的名字。
现代C语言已经发展出多个标准版本,从1989年的ANSI C(C89)、1999年的C99,到2011年的C11和2018年的C18。每个新标准都引入了重要改进:
- C99增加了布尔类型、变长数组等特性
- C11引入了多线程支持、泛型选择等现代特性
- C18主要是对C11的缺陷修正
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 第一个C程序解剖
让我们从一个最简单的"Hello World"程序开始,逐行解析C程序的基本结构:
c复制#include <stdio.h>
int main() {
/* 这是我在C世界的第一个问候 */
printf("Hello, World!\n");
return 0;
}
2.1 预处理指令
#include <stdio.h> 是预处理指令,它告诉编译器在实际编译之前先包含标准输入输出头文件。这个文件包含了printf()等函数的声明。在C语言中,头文件通常有以下几种包含方式:
#include <header.h>:从系统目录查找#include "header.h":先从当前目录查找,再到系统目录#include MACRO:通过宏定义动态包含
2.2 main函数
main()函数是每个C程序的入口点,操作系统从这里开始执行程序。关于main函数有几个关键点需要注意:
- 返回类型必须是
int(C99标准强制要求) - 参数可以有两种形式:
int main(void):明确表示无参数- `int
