C语言基础入门超全整理 | 从零基础到上手核心语法

C语言基础入门超全整理 | 从零基础到上手核心语法
(最适合零基础 + 面试/考研/自学 完整版)

这是一篇真正从零开始、系统性、结构化的C语言核心语法合集。学完这篇,你就能独立写出完整的C程序,理解内存、指针、数组等核心概念,为后续数据结构、操作系统、嵌入式打下坚实基础。

1. C语言概述与开发环境

  • 特点:高效、贴近硬件、可移植性强、指针灵活(也最容易出错)
  • 应用领域:操作系统内核、嵌入式、驱动、游戏引擎、高性能服务器
  • 学习建议:用 VS Code + GCC 或 Dev-C++ / CLion

第一个程序(Hello World)

#include <stdio.h>          // 标准输入输出头文件

int main()                  // 主函数,程序入口
{
    printf("Hello, World!\n");   // 输出并换行
    return 0;                    // 返回0表示程序正常结束
}

编译运行命令(命令行):

gcc hello.c -o hello     # 编译生成可执行文件
./hello                  # Linux/Mac 运行
hello.exe                # Windows 运行

2. 数据类型与变量

基本数据类型(必背大小,32/64位系统)

类型关键字字节数(常见)取值范围(有符号)格式化输出
字符型char1-128 ~ 127%c
短整型short2-32768 ~ 32767%hd
整型int4-2^31 ~ 2^31-1%d
长整型long4或8取决于系统%ld
长长整型long long8-2^63 ~ 2^63-1%lld
单精度浮点float4≈ ±3.4E-38 ~ ±3.4E+38%f
双精度浮点double8≈ ±1.7E-308 ~ ±1.7E+308%lf

变量定义与初始化

int a = 10;          // 定义并初始化
int b;               // 只定义,未初始化(值随机!危险)
const int MAX = 100; // 常量,定义后不可修改

sizeof运算符:求变量或类型占用的字节数

printf("%zu\n", sizeof(int));        // 输出4(或8)
printf("%zu\n", sizeof(a));          // 输出变量a占用的字节

3. 常量与宏定义

#define PI 3.14159           // 宏定义(预处理阶段替换)
const double PI2 = 3.14159;  // const常量(编译时检查)

enum Color { RED, GREEN, BLUE };   // 枚举常量

4. 运算符与表达式

  • 算术运算符+ - * / %
  • 关系运算符> < >= <= == !=
  • 逻辑运算符&& || !(短路特性)
  • 位运算符& | ^ ~ << >>
  • 赋值运算符= += -=
  • 三目运算符条件 ? 表达式1 : 表达式2
  • 逗号运算符,(从左到右,最后一个表达式的值作为结果)

优先级记忆口诀(从高到低):
括号 → 单目 → 算术 → 关系 → 逻辑 → 赋值 → 逗号

5. 程序流程控制

(1)顺序结构

默认执行顺序。

(2)选择结构

if (条件) { ... }
else if (条件) { ... }
else { ... }

// switch(只能判断整数或字符)
switch (表达式) {
    case 值1: ... break;
    case 值2: ... break;
    default: ...
}

(3)循环结构(三大循环)

// 1. while(先判断后执行)
while (条件) { ... }

// 2. do-while(先执行后判断,至少执行一次)
do { ... } while (条件);

// 3. for(最常用)
for (初始化; 条件; 增量) { ... }

break:跳出当前循环
continue:跳过本次循环剩余语句

6. 数组(Array)

int arr[10];                    // 定义数组,元素未初始化
int nums[5] = {1, 2, 3, 4, 5};  // 初始化
int scores[] = {90, 85, 92};    // 自动推断大小

// 二维数组
int matrix[3][4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}};

数组特点

  • 内存连续
  • 下标从0开始
  • 不能整体赋值(除了初始化时)
  • 作为函数参数时退化为指针

7. 字符串

C语言中字符串就是以 ‘\0’ 结尾的字符数组

char str1[] = "Hello";           // 自动加 '\0'
char str2[10] = {'H','e','l','l','o','\0'};

printf("%s\n", str1);            // %s 输出字符串

常用字符串函数(需包含 <string.h>):

  • strlen():字符串长度(不含’\0’)
  • strcpy():字符串拷贝
  • strcat():字符串拼接
  • strcmp():字符串比较

8. 函数(Function)

// 函数定义
返回类型 函数名(参数类型 参数名, ...) {
    // 函数体
    return 返回值;
}

// 函数声明(原型)
int add(int a, int b);

int main() {
    int result = add(3, 5);
    return 0;
}

int add(int a, int b) {
    return a + b;
}

参数传递方式

  • 值传递(默认):形参是实参的拷贝,修改不影响实参
  • 地址传递:传递指针或数组名,可修改实参

9. 指针(Pointer)—— C语言灵魂

int a = 10;
int *p = &amp;a;        // p 是指向int的指针,存放a的地址

printf("%d\n", *p); // *p 取指针指向的值 → 10
printf("%p\n", p);  // 输出地址

// 指针与数组
int arr[5] = {1,2,3,4,5};
int *ptr = arr;     // 数组名就是首元素地址
printf("%d\n", *(ptr + 2));  // 输出3

指针进阶(后续会重点展开):

  • 指针数组
  • 数组指针
  • 函数指针
  • 指针函数
  • 多级指针

10. 结构体(Struct)

struct Student {
    int id;
    char name[20];
    int age;
};

struct Student s1 = {1001, "张三", 20};
struct Student *ps = &amp;s1;

printf("%s\n", ps->name);   // 通过指针访问成员用 ->

11. 常用头文件与预处理

#include &lt;stdio.h>     // 输入输出
#include &lt;stdlib.h>    // malloc、exit等
#include &lt;string.h>    // 字符串处理
#include &lt;math.h>      // 数学函数
#include &lt;time.h>      // 时间

#define DEBUG 1        // 宏定义

12. 内存管理初步

  • malloc() / calloc() / realloc() / free()
  • 栈内存 vs 堆内存
  • 野指针、空指针

学习路线建议(从零到上手)

  1. 第1周:数据类型 + 运算符 + 流程控制 + 数组
  2. 第2周:函数 + 字符串 + 指针基础
  3. 第3周:结构体 + 动态内存 + 文件操作
  4. 第4周:综合项目(学生管理系统、通讯录等)

推荐练习项目(按顺序):

  • 九九乘法表
  • 冒泡/选择排序
  • 学生成绩管理系统(结构体 + 数组)
  • 简单计算器(switch + 函数)
  • 字符串处理工具

这篇是C语言基础最完整的核心语法整理。后续我将陆续推出:

  • C语言指针进阶与内存模型
  • C语言数组与指针的那些事
  • 结构体、共用体、枚举深度解析
  • 文件操作 + 动态内存管理
  • C语言常见面试题100道

想立即继续哪一部分?
直接回复:

  • “下一章 指针详解”
  • “学生管理系统完整代码”
  • “C语言常见错误与调试技巧”
  • 或其他你想学的具体内容

从零基础开始,稳扎稳打,C语言学好了,后续所有编程语言都会变得简单!

加油,你已经迈出了非常重要的一步!
随时告诉我下一步想学什么,我继续为你整理超全版。

文章已创建 5130

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部