C语言入门教程
第一阶段:启程准备
1. C语言是什么?
C语言是一种经典的、使用非常广泛的高级计算机编程语言。但它又非常接近计算机底层(硬件),因此常被称为“中级语言”或“系统编程语言”。
- 特点:高效、灵活、功能强大。
- 用途:操作系统(如Windows、Linux)、嵌入式系统(如单片机、智能家电)、驱动程序、编译器、游戏开发等。
- 地位:是现代许多高级语言(如C++, C#, Java, Python)的基础。学好C语言,对理解计算机原理和学习其他语言大有裨益。
2. 搭建开发环境
要编写和运行C语言程序,你需要两个工具:
- 代码编辑器:用于书写代码。例如:Visual Studio Code, Notepad++, 或任何纯文本编辑器。
- 编译器:用于将你写的“高级语言”代码翻译成计算机能理解的“机器语言”。
推荐给新手的方案:使用集成开发环境(IDE)
IDE将编辑器和编译器等功能集成在一起,方便使用。
- Windows: Dev-C++ 或 Code::Blocks
- 轻量级,安装简单,非常适合初学者。
- Mac/Linux: 通常自带GCC编译器。你可以使用终端(Terminal)和任何文本编辑器,或者安装 Xcode(Mac) 或 Code::Blocks。
以Dev-C++为例,第一个程序“Hello, World!”
- 安装并打开Dev-C++。
- 点击
文件->新建->源代码。 - 输入以下代码:
#include <stdio.h> // 包含标准输入输出头文件
int main() { // 主函数,程序的入口
printf("Hello, World!\n"); // 在屏幕上输出 "Hello, World!"
return 0; // 程序正常结束
}
- 点击
文件->保存为...,将文件保存为hello.c。 - 点击
运行->编译运行(或按 F11)。如果一切正常,会弹出一个黑色窗口,显示Hello, World!。
恭喜你,你写出了第一个C程序!
第二阶段:核心语法基础
让我们逐行分析上面的“Hello, World!”程序,并学习核心概念。
1. 基本结构
#include <stdio.h>:预处理指令。它告诉编译器在编译之前,先把stdio.h(标准输入输出头文件)的内容包含进来。有了它,我们才能使用printf这样的输入输出函数。int main() { ... }:主函数。每个C程序都必须有且仅有一个main函数。程序从这里开始执行。{ }:花括号,定义了函数的开始和结束。printf("..."):一个函数,用于将内容输出到标准输出设备(屏幕)。\n:转义字符,代表换行。return 0;:main函数的返回值。返回0通常表示程序成功执行完毕。//:单行注释,用于解释代码,编译器会忽略它。多行注释用/* ... */。
2. 变量与数据类型
计算机需要存储数据,数据有不同的类型。
| 数据类型 | 说明 | 示例 |
|---|---|---|
int | 整型 | int age = 20; |
float | 单精度浮点型 | float price = 10.5; |
double | 双精度浮点型 | double salary = 8500.75; |
char | 字符型 | char grade = 'A'; |
如何使用?
#include <stdio.h>
int main() {
int a = 10; // 声明一个整型变量a,并赋值为10
float b = 3.14; // 声明一个浮点型变量b
char c = 'C'; // 声明一个字符型变量c
b = 5.67; // 改变变量b的值
printf("a = %d\n", a); // %d 用于输出整数
printf("b = %.2f\n", b); // %.2f 输出浮点数,保留两位小数
printf("c = %c\n", c); // %c 用于输出字符
return 0;
}
3. 输入与输出
-
输出:
printf()- 用于格式化输出。
%d,%f,%c这些叫做格式说明符,它们指定了要输出的变量的类型。
-
输入:
scanf()- 用于从键盘接收输入。
#include <stdio.h>
int main() {
int number;
printf("请输入一个整数:");
scanf("%d", &number); // & 是“取地址符”,非常重要!
printf("你输入的数是:%d\n", number);
return 0;
}
4. 运算符
- 算术运算符:
+,-,*,/,%(取余数) - 关系运算符:
==,!=,>,<,>=,<= - 逻辑运算符:
&&(与),||(或),!(非)
#include <stdio.h>
int main() {
int a = 5, b = 3;
printf("a + b = %d\n", a + b);
printf("a > b ? %d\n", a > b); // 输出 1 (真) 或 0 (假)
return 0;
}
第三阶段:程序流程控制
1. 条件判断 (if...else)
让程序根据条件决定执行哪段代码。
#include <stdio.h>
int main() {
int score;
printf("请输入你的分数:");
scanf("%d", &score);
if (score >= 90) {
printf("优秀!\n");
} else if (score >= 60) {
printf("及格。\n");
} else {
printf("不及格,要加油了!\n");
}
return 0;
}
2. 循环
-
for循环:适合已知循环次数的场景。// 计算 1+2+3+...+100 的和 #include <stdio.h> int main() { int sum = 0; for (int i = 1; i <= 100; i++) { sum += i; // 等价于 sum = sum + i; } printf("总和是:%d\n", sum); return 0; } -
while循环:适合在条件满足时一直循环。// 不断要求用户输入,直到输入0为止 #include <stdio.h> int main() { int num; printf("请输入一个数字(输入0退出):"); scanf("%d", &num); while (num != 0) { printf("你输入了:%d\n", num); printf("请再输入一个数字(输入0退出):"); scanf("%d", &num); } printf("程序结束。\n"); return 0; }
第四阶段:进阶核心概念
1. 函数
函数是一段执行特定任务的代码块,可以重复使用。这避免了代码重复,让程序更清晰。
#include <stdio.h>
// 定义一个函数,功能是求两个数的最大值
int max(int x, int y) { // x和y是“形式参数”
if (x > y) {
return x;
} else {
return y;
}
}
int main() {
int a = 10, b = 20;
int result = max(a, b); // 调用函数,a和b是“实际参数”
printf("最大值是:%d\n", result);
return 0;
}
2. 数组
用于存储同一类型的多个数据的集合。
#include <stdio.h>
int main() {
// 声明一个包含5个整数的数组
int numbers[5] = {10, 20, 30, 40, 50};
// 通过下标(索引)访问数组元素,下标从0开始
printf("第一个元素:%d\n", numbers[0]); // 输出 10
printf("第三个元素:%d\n", numbers[2]); // 输出 30
// 循环遍历数组
for (int i = 0; i < 5; i++) {
printf("numbers[%d] = %d\n", i, numbers[i]);
}
return 0;
}
3. 指针(C语言的灵魂与难点)
指针是一个变量,其值是另一个变量的内存地址。
#include <stdio.h>
int main() {
int var = 10; // 定义一个普通变量
int *p; // 定义一个指针变量,指向一个整数
p = &var; // 将变量var的地址赋值给指针p
printf("变量var的值:%d\n", var); // 输出:10
printf("变量var的地址:%p\n", &var); // 输出地址(类似0x7fff...)
printf("指针p存储的地址:%p\n", p); // 输出同上
printf("通过指针p访问var的值:%d\n", *p); // *p 是“解引用”,输出:10
*p = 20; // 通过指针修改变量var的值
printf("现在var的值是:%d\n", var); // 输出:20
return 0;
}
为什么学指针?
指针可以让你直接操作内存,使得函数可以修改外部变量的值(通过传递地址),也是动态内存分配、数组和字符串操作的基础。
推荐资源
- 书籍:
- 《C Primer Plus》:非常经典,讲解细致,适合零基础自学。
- 《C程序设计语言》:C语言之父著作,简洁深刻,适合有一定基础后阅读。
- 在线教程:
- 菜鸟教程(C语言):中文,内容全面,适合快速查阅。
- W3Schools(C):英文,交互式练习,非常适合入门。
7191

被折叠的 条评论
为什么被折叠?



