C 基础语法(一文讲透)
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;演示链接: http://116.62.199.48:7070 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 90w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 3100+ 小伙伴加入学习 ,欢迎点击围观
在编程领域,C语言如同一座桥梁,连接着底层硬件与高级应用开发。作为一门接近硬件的通用编程语言,C语言凭借高效性、灵活性和广泛的适用性,成为许多开发者入门的首选。掌握 C基础语法 是理解计算机底层运作逻辑、提升代码编写能力的关键一步。无论你是编程初学者,还是希望巩固基础的中级开发者,本文都将通过系统化讲解与生动案例,带你逐步构建对C语言核心语法的全面认知。
一、C语言基础概念与环境配置
1.1 C语言的核心特性
C语言诞生于1972年,由Dennis Ritchie设计,其核心特性包括:
- 高效性:代码直接编译为机器指令,运行速度快,适合系统级开发。
- 简洁性:语法简洁,无需复杂框架即可实现复杂功能。
- 跨平台性:编译器支持广泛,可在多种操作系统上运行。
1.2 开发环境搭建
学习C语言前,需安装编译器(如GCC、Clang或Visual Studio)。以GCC为例,编写代码后通过命令行执行:
// hello.c
#include <stdio.h>
int main() {
printf("Hello, C World!\n");
return 0;
}
编译与运行命令:
gcc hello.c -o hello
./hello
输出结果:Hello, C World!
二、数据类型与变量
2.1 基本数据类型
C语言提供多种数据类型,用于定义变量存储的数据范围和类型:
类型 | 名称 | 大小(字节) | 范围示例 |
---|---|---|---|
int | 整型 | 4 | -2,147,483,648到2,147,483,647 |
float | 单精度浮点 | 4 | ±3.4e±38 |
char | 字符型 | 1 | -128到127或0到255 |
案例:
int age = 25;
float price = 19.99;
char initial = 'A';
2.2 变量作用域与存储类型
- 作用域:决定变量在代码中可被访问的范围。例如,
main()
函数内的变量仅在函数内部有效。 - 存储类型:通过
auto
、static
、extern
等关键字控制内存分配。例如:
static int counter = 0; // 变量生命周期持续整个程序运行期间
三、运算符与表达式
3.1 算术运算符
C语言支持加、减、乘、除、取模等运算:
int a = 10, b = 3;
printf("%d, %d, %d\n", a + b, a / b, a % b); // 输出:13, 3, 1
3.2 赋值与复合运算符
通过+=
、-=
等简化代码:
int x = 5;
x += 3; // 等同于 x = x + 3; 结果为8
3.3 逻辑与关系运算符
用于条件判断,例如:
if (age >= 18 && score > 60) {
printf("及格!");
}
四、控制结构
4.1 条件语句:if-else
通过条件判断执行不同代码块:
int temperature = 30;
if (temperature > 35) {
printf("炎热");
} else if (temperature > 25) {
printf("温暖"); // 输出:温暖
} else {
printf("凉爽");
}
4.2 循环结构:for、while与do-while
for循环:
for (int i = 0; i < 5; i++) {
printf("%d ", i); // 输出:0 1 2 3 4
}
while循环:
int count = 0;
while (count < 3) {
printf("%d ", count); // 输出:0 1 2
count++;
}
do-while循环:
int num = 0;
do {
printf("%d ", num); // 至少执行一次,输出:0
num++;
} while (num < 0);
五、函数:代码复用的核心
5.1 函数定义与调用
函数通过return_type function_name(parameters)
定义:
int add(int a, int b) {
return a + b;
}
int main() {
int result = add(3, 5);
printf("结果:%d", result); // 输出:8
return 0;
}
5.2 参数传递与返回值
C语言使用值传递,即函数内修改参数不会影响外部变量。若需修改原始值,需传递指针:
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
六、指针与内存管理
6.1 指针基础
指针存储变量的内存地址,可通过&
获取地址,*
解引用:
int num = 10;
int *ptr = #
printf("%d", *ptr); // 输出:10
6.2 动态内存分配
通过malloc
和free
管理内存:
int *array = (int*)malloc(5 * sizeof(int)); // 分配5个int空间
if (array != NULL) {
array[0] = 100;
free(array); // 释放内存
}
七、数组与字符串
7.1 数组声明与访问
数组是相同类型数据的集合:
int scores[5] = {90, 85, 95, 88, 78};
printf("%d", scores[2]); // 输出:95
7.2 字符串处理
字符串本质是字符数组,以\0
结尾:
char name[] = "C语言";
printf("%s", name); // 输出:C语言
八、结构体与枚举
8.1 结构体
自定义复杂数据类型:
struct Student {
char name[50];
int age;
};
struct Student s1 = {"张三", 20};
8.2 枚举
定义一组命名常量:
enum Weekday { Mon, Tue, Wed, Thu, Fri, Sat, Sun };
enum Weekday today = Wed;
结论
掌握 C基础语法 是开发者构建技术能力的重要基石。本文从环境配置、数据类型、运算符、控制结构到函数和指针,系统性地梳理了C语言的核心知识点,并通过代码示例与生活化比喻,帮助读者逐步理解抽象概念。无论是编写系统工具、嵌入式程序,还是为后续学习其他语言(如C++、Java)打下基础,扎实的C语言基础都将使你受益匪浅。建议读者通过实践项目巩固知识,例如实现计算器、文件处理工具,或参与开源代码阅读,逐步提升编程思维与技能。