叼烟扛炮头像
关注
【C 语言系统入门教程】第 1 讲:C 语言常见概念 | 零基础学习笔记封面图

【C 语言系统入门教程】第 1 讲:C 语言常见概念 | 零基础学习笔记

【C 语言系统入门教程】第 1 讲:C 语言常见概念 | 零基础学习笔记

本系列为 C 语言零基础系统学习笔记,配套课程课件内容,持续更新中~本文为系列第 1 讲,覆盖 C 语言入门全量核心基础概念,从环境搭建到第一个 C 语言程序,全方位拆解入门知识点,兼顾理论理解与代码实操。


🎯 本讲学习目标

  1. 理解 C 语言的本质、发展历史与应用场景,明确编译型语言的核心特点

  2. 掌握 VS2022 开发环境的基础使用,区分 C 语言源文件 (.c) 与头文件 (.h)

  3. 熟练掌握 main 函数的核心规则,能独立编写、编译并运行第一个 C 语言程序

  4. 掌握 printf 库函数的基础用法,理解库函数的核心概念与头文件使用规范

  5. 熟记 C 语言关键字的使用规则,掌握 ASCII 编码的核心规律与常用值

  6. 深刻理解字符串的本质与\0结束标志的核心作用,规避字符串使用的常见错误

  7. 掌握 C 语言常见转义字符的含义与使用场景

  8. 区分 C 语言的 5 类语句,掌握注释的 2 种标准写法与工程化使用规范


📚 核心学习内容

1. C 语言是什么?

C 语言是一门通用的编译型计算机语言,是人与计算机交互的标准化工具,和 C++、Java、Python 等同属计算机语言范畴。它凭借贴近硬件的执行效率、极强的可移植性,广泛应用于操作系统、嵌入式开发、底层驱动、编译器等核心领域,是编程领域的经典基础语言。

2. C 语言的历史和辉煌

C 语言最初是作为 Unix 系统的开发工具而诞生,核心发展时间线如下:

  • 1969 年:贝尔实验室肯・汤普逊与丹尼斯・里奇联合开发 Unix 系统,为解决移植问题,肯・汤普逊在 BCPL 语言基础上发明了 B 语言

  • 1972 年:丹尼斯・里奇与布莱恩・柯林汉在 B 语言的基础上,重新设计了新的编程语言,取代 B 语言,命名为 C 语言

  • 1973 年:整个 Unix 系统使用 C 语言完成重写,C 语言开始快速传播,广泛应用于各类操作系统与系统软件开发

  • 1988 年:美国国家标准协会 (ANSI) 完成 C 语言标准化,标志着 C 语言走向稳定与规范化

  • 至今:C 语言长期稳居 TIOBE 编程语言排行榜前三名,仍是底层开发领域的主流语言

C语言发展历程
C语言发展历程

TIOBE 排行榜参考链接:https://www.tiobe.com/tiobe-index/

3. 开发环境:编译器选择与 VS2022 详解

3.1 编译与链接的核心原理

C 语言是编译型语言,我们编写的.c后缀源代码是文本文件,本身无法直接执行,必须经过编译 + 链接两个核心过程,生成二进制可执行文件才能运行。

核心流程:

  1. 编译:每个.c源文件单独经过编译器处理,生成对应的目标文件(.obj为后缀)

  2. 链接:多个目标文件 + 库文件经过链接器处理,最终生成可执行程序(.exe为后缀)

编译与链接
编译与链接
3.2 常见编译器与 IDE 对比

集成开发环境 (IDE) 一般集成了代码编辑器、编译器、调试器、图形用户界面等工具,是一站式的程序开发工具。主流 C 语言开发工具对比如下:

开发工具集成编译器核心特点
VS2022MSVC企业级主流 IDE,功能强大,中文界面,免额外环境配置,新手极度友好
XCodeclang苹果电脑专属开发工具,适配 macOS/iOS 系统开发
DevC++gcc小巧轻便,安装包体积小,功能极简,多用于编程竞赛,不利于代码规范养成
CodeBlocksgcc小众工具,需手动配置环境,不推荐零基础新手使用
Clion可自定义配置功能强大,适配跨平台开发,为收费软件,需配合 CMake 使用

✅ 新手首选推荐:VS2022 社区版(免费、开箱即用、企业开发主流、学习资料丰富)

VS2022 安装教程参考:https://www.bilibili.com/video/BV11R4y1s7jz/

3.3 VS2022 的优缺点
  • 优点:企业主流开发工具,集成编辑器 + 编译器 + 调试器全链路能力,安装即可使用,无需额外配置环境,原生中文界面,对新手友好

  • 缺点:功能丰富导致安装包体积较大,占用磁盘空间较多

4. VS 项目、源文件与头文件基础

在 VS2022 中编写 C 语言代码,必须遵循标准的项目管理规范:

  1. 项目:编写代码前必须先创建项目,所有代码都在项目中统一管理

  2. 源文件:C 语言中以.c为后缀的文件,用于编写程序的核心实现代码

  3. 头文件:C 语言中以.h为后缀的文件,用于声明函数、宏定义、常量等内容

VS2022项⽬中的.c⽂件
VS2022项⽬中的.c⽂件
.c文件的展示
.c文件的展示
C语言代码
C语言代码

5. 第一个 C 语言程序

我们通过最经典的 hello world 程序,完成 C 语言代码的入门,代码如下:

// 包含printf函数所需的标准输入输出头文件
#include <stdio.h>
​
// main函数:程序的唯一入口
int main()
{
    // printf库函数:在屏幕上打印指定内容
    printf("hello C\n");
    // 函数返回值,与开头的int类型前后呼应
    return 0;
}

✅ VS2022 中运行代码快捷键:Ctrl + F5

6. main 函数(主函数)核心规则

main 函数是C 语言程序的唯一入口,无论一个程序有多少行代码、多少个源文件,都必须从 main 函数开始执行,也叫主函数。

核心规则必须牢记:

  1. 一个 C 语言程序(一个项目)有且仅有一个 main 函数,即使项目中有多个.c 文件,也只能定义一个 main 函数

  2. main 前的int表示函数执行结束后会返回一个整型值,必须与函数末尾的return 0;前后呼应

  3. 新手编写代码常见错误:

    • main错写为mian

    • 遗漏 main 后的括号()

    • 代码中使用中文符号(括号、分号、引号等)

    • 语句结束后遗漏分号;

7. printf 与库函数

7.1 printf 函数基础用法

printf 是 C 语言标准库提供的核心库函数,功能是在标准输出设备(通常是屏幕)上打印信息。使用 printf 函数时,必须通过#include <stdio.h>包含对应的头文件,否则会编译报错。

常用打印场景示例:

#include <stdio.h>
​
int main()
{
    // 1. 直接打印字符串
    printf("hello C\n");
    
    // 2. 打印整型数据,%d为整型占位符
    int n = 100;
    printf("%d\n", n);
    
    // 3. 打印单个字符,%c为字符占位符
    printf("%c\n", 'q');
    
    // 4. 打印双精度浮点型数据,%lf为浮点型占位符
    printf("%lf\n", 3.14);
    
    return 0;
}
7.2 库函数核心概念
  • 库函数:C 语言标准规定了一组高频使用的函数,由不同编译器厂商根据标准实现,提供给程序员直接使用,避免重复造轮子,大幅提升开发效率。这些函数组成了标准库,统称为库函数

  • 使用规范:库函数必须包含对应的头文件才能使用,同一系列的库函数通常声明在同一个头文件中

  • 官方参考文档:https://cplusplus.com/reference/clibrary/

8. C 语言关键字

关键字是 C 语言预先保留的、具有特殊含义的符号,也叫保留字,是 C 语言语法的核心组成部分。

核心使用规则:

  1. 关键字都有固定的特殊含义,专供 C 语言本身使用

  2. 程序员自己创建变量名、函数名等标识符时,不能与关键字重复

  3. 关键字无法由程序员自行创建

C 语言标准 32 个核心关键字:

auto break case char const continue default do double else enum
extern float for goto if int long register return short signed sizeof
static struct switch typedef union unsigned void volatile while

注:C99 标准中新增了inlinerestrict_Bool_Complex_Imaginary等关键字

关键字官方参考:https://zh.cppreference.com/w/c/keyword

9. 字符和 ASCII 编码

9.1 基础概念
  • C 语言中,单个字符使用单引号''包裹,例如:'a''#''0'

  • 计算机中所有数据都以二进制形式存储,字符需要通过统一的编码规则转换为二进制序列。ASCII 编码是美国国家标准学会 (ANSI) 制定的标准编码,也是 C 语言字符遵循的编码规则

9.2 ASCII 编码核心规律(必须掌握)

无需背诵完整 ASCII 码表,重点掌握以下核心规律,覆盖 90% 的使用场景:

  1. 大写字母A~Z:ASCII 码值范围 65~90

  2. 小写字母a~z:ASCII 码值范围 97~122

  3. 对应大小写字母的 ASCII 码值差值固定为 32(例如'a'-'A'=32

  4. 数字字符0~9:ASCII 码值范围 48~57

  5. 换行符\n的 ASCII 码值为 10

  6. ASCII 码值 0~31 为不可打印字符,无法在屏幕上直观显示

  7. 可打印字符的 ASCII 码值范围:32~127

ASCII码表
ASCII码表
9.3 代码实操示例
#include <stdio.h>
​
int main()
{
    // 通过字符本身打印
    printf("%c\n", 'Q');
    // 通过ASCII码值打印对应字符
    printf("%c\n", 81); // 81是字符'Q'的ASCII码值
    
    // 循环打印所有可打印ASCII字符
    int i = 0;
    for (i = 32; i <= 127; i++)
    {
        printf("%c ", i);
        // 每16个字符换行,排版更清晰
        if (i % 16 == 15)
            printf("\n");
    }
    return 0;
}

10. 字符串和 \0 结束标志

10.1 字符串基础概念

C 语言中,使用双引号""包裹的一串字符称为字符串,例如:"abcdef""hello world"。字符串的打印可以使用%s作为占位符。

10.2 核心重点:\0 的作用

字符串的末尾会隐藏一个\0字符,这个字符是字符串的结束标志,这是 C 语言字符串最核心的知识点。

  • 使用 printf 打印字符串、strlen 计算字符串长度时,遇到\0就会自动停止

  • 如果字符数组中没有\0作为结束标志,打印时会持续读取内存中的数据,出现随机乱码

10.3 代码验证示例
#include <stdio.h>
​
int main()
{
    // 字符数组,仅存放3个字符,无\0结束标志
    char arr1[] = {'a', 'b', 'c'};
    // 字符串常量初始化,末尾自动隐藏\0结束标志
    char arr2[] = "abc";
    // 手动添加\0结束标志
    char arr3[] = {'a', 'b', 'c', '\0'};
    
    printf("%s\n", arr1); // 打印结果:abc+随机乱码
    printf("%s\n", arr2); // 打印结果:abc(正常)
    printf("%s\n", arr3); // 打印结果:abc(正常)
    printf("%s\n", "abc\0def"); // 仅打印abc,遇到\0直接停止
    return 0;
}
VS2022的监视窗⼝观察字符串
VS2022的监视窗⼝观察字符串

11. 转义字符

转义字符,顾名思义就是转变字符原本的含义,实现特殊功能的字符,由反斜杠\+ 特定字符组成。

11.1 常见转义字符及核心作用
转义字符核心作用
\?书写连续多个问号时使用,防止被解析为三字母词
\'表示字符常量单引号'
\"表示字符串内部的双引号"
\\表示反斜杠本身,防止被解析为转义序列
\a警报,触发终端发出响铃或闪烁
\b退格键,光标回退一个字符
\n换行符,光标移到下一行开头
\r回车符,光标移到当前行开头
\t水平制表符,光标跳到下一个 4/8 倍数的制表位,常用于排版对齐
\v垂直制表符
\ddd1~3 个八进制数字,代表对应 ASCII 码的字符,例如\130代表字符 X
\xdd2 个十六进制数字,代表对应 ASCII 码的字符,例如\x30代表字符 0
\0空字符,ASCII 码值为 0,专门作为字符串的结束标志
11.2 代码实操示例
#include <stdio.h>
​
int main()
{
    // 打印特殊符号:单引号、双引号、反斜杠
    printf("%c\n", '\'');
    printf("%s\n", "\"");
    printf("c:\\test\\code\\test.c\n");
    
    // 触发终端响铃
    printf("\a");
    
    // 八进制与十六进制转义字符
    printf("%c\n", '\130'); // 八进制130转换为十进制是88,对应ASCII字符X
    printf("%c\n", '\x30'); // 十六进制30转换为十进制是48,对应ASCII字符0
    return 0;
}

转义字符官方参考:https://zh.cppreference.com/w/c/language/escape

12. 语句和语句分类

C 语言的代码由一条一条的语句构成,共分为 5 大类,覆盖所有代码编写场景:

12.1 空语句

一个分号;就是一条空语句,适用于 “语法上需要一条语句,但逻辑上不需要执行任何操作” 的场景。

#include <stdio.h>
int main()
{
    ; // 空语句
    return 0;
}
12.2 表达式语句

表达式末尾加上分号,就构成了表达式语句,是 C 语言中最常用的语句类型。

#include <stdio.h>
int main()
{
    int a = 20;
    int b = 0;
    b = a + 5; // 表达式语句
    return 0;
}
12.3 函数调用语句

函数调用时,末尾加上分号,就构成了函数调用语句。

#include <stdio.h>

// 自定义加法函数
int Add(int x, int y)
{
    return x+y;
}

int main()
{
    printf("hehe\n"); // 库函数调用语句
    int ret = Add(2, 3); // 自定义函数调用语句
    return 0;
}
12.4 复合语句

成对大括号{}包裹的代码块,就构成了复合语句,例如函数体、循环体、分支语句的代码块,都属于复合语句。

12.5 控制语句

控制语句用于控制程序的执行流程,实现 C 语言的顺序、选择、循环三大程序结构,共 9 种,分为 3 大类:

  1. 条件判断(分支)语句:if 语句、switch 语句

  2. 循环执行语句:do while 语句、while 语句、for 语句

  3. 转向语句:break 语句、goto 语句、continue 语句、return 语句

13. 注释的用法与规范

注释是对代码的说明文字,编译器会完全忽略注释,注释不会对代码的执行产生任何影响,仅用于给程序员阅读和理解代码。良好的注释是优秀代码的必备要素,也是职场开发的核心规范。

13.1 C 语言两种标准注释格式
  1. 块注释 /* 注释内容 */

    • 支持单行、多行注释,也可以插在代码行内

    • 不支持嵌套注释,遇到第一个*/就会结束注释

    • 示例:

    /* 这是单行块注释 */
    /*
    这是多行
    块注释
    */
    // 行内注释,对函数参数进行说明
    int fopen(char* s /* 文件名 */, int mode);

  2. 单行注释 // 注释内容

    • C99 标准新增的注释格式,从//开始到行尾的所有内容都属于注释

    • 仅支持单行注释,可放在行首或语句结尾,写法简洁,是开发中最常用的注释格式

    • 示例:

    // 这是单行注释,说明变量的作用
    int x = 1; // 这是行尾的单行注释

13.2 注释使用注意事项
  1. 注释不能放在双引号内部,双引号内的注释符号会被视为普通字符,失去注释作用

  2. 编译时,注释会被替换为一个空格,而非直接删除

  3. 禁止过度注释,只写必要的、能帮助理解代码逻辑的注释,不要写代码本身就能直观看出的无效注释


✍️ 课后习题与参考答案

一、选择题
  1. 一个 C 语言程序的唯一入口是( )

    A. printf 函数

    B. main 函数

    C. 自定义函数

    D. 程序开头第一行代码

  2. 下列关于 C 语言 main 函数的说法,正确的是( )

    A. 一个项目中可以有多个 main 函数

    B. main 函数必须写在第一个.c 文件中

    C. 程序从 main 函数开始执行,一个项目有且仅有一个 main 函数

    D. main 函数必须写在程序最开头

  3. C 语言中,字符串的结束标志是( )

    A. '\n'

    B. '0'

    C. '\0'

    D. 空格

  4. 下列关于 ASCII 码值的规律,错误的是( )

    A. 大写字母 A 的 ASCII 码值是 65

    B. 小写字母 a 的 ASCII 码值是 97

    C. 数字字符 0 的 ASCII 码值是 0

    D. 对应大小写字母的 ASCII 码值差值为 32

  5. 下列转义字符中,表示换行的是( )

    A. '\t'

    B. '\n'

    C. '\r'

    D. '\b'

  6. C 语言中,源文件的标准后缀名是( )

    A. .h

    B. .exe

    C. .obj

    D. .c

  7. 下列选项中,不属于 C 语言 32 个核心关键字的是( )

    A. int

    B. if

    C. main

    D. return

  8. 使用 printf 函数打印整型数据时,对应的占位符是( )

    A. % c

    B. % s

    C. % d

    D. % lf

二、判断题
  1. C 语言是一门解释型语言,源代码可以直接执行。( )

  2. 程序员自定义的变量名可以和 C 语言关键字重名。( )

  3. 注释会被编译器编译执行,影响程序的运行结果。( )

  4. 字符数组char arr[] = "abc"中,实际存储了 4 个字符(a、b、c、\0)。( )

  5. VS2022 中,运行 C 语言代码的快捷键是 Ctrl+F5。( )

三、编程题
  1. 编写 C 语言程序,在屏幕上分行打印出你的姓名和学号。

  2. 编写 C 语言程序,循环打印出所有大写英文字母 A~Z,每个字母之间用空格分隔。

  3. 编写 C 语言程序,利用转义字符\t\n实现如下格式的对齐输出:

姓名    年龄    性别
张三    20      男
李四    21      女

参考答案

一、选择题
  1. B   2. C   3. C   4. C   5. B   6. D   7. C   8. C

二、判断题
  1. ×(C 语言是编译型语言,必须经过编译和链接生成可执行文件才能运行)

  2. ×(程序员自定义标识符不能与 C 语言关键字重名,否则会编译报错)

  3. ×(编译器会完全忽略注释,不会对程序运行产生任何影响)

三、编程题

        1、参考代码

#include <stdio.h>

int main()
{
    // 替换为自己的姓名和学号即可
    printf("姓名:张三\n");
    printf("学号:20240001\n");
    return 0;
}

        3、参考代码

#include <stdio.h>

int main()
{
    // 循环遍历A~Z的ASCII码值,逐个打印
    for (char c = 'A'; c <= 'Z'; c++)
    {
        printf("%c ", c);
    }
    return 0;
}

        3、参考代码

#include <stdio.h>

int main()
{
    // 使用\t制表符实现列对齐,\n实现换行
    printf("姓名\t年龄\t性别\n");
    printf("张三\t20\t男\n");
    printf("李四\t21\t女\n");
    return 0;
}

📝 本讲总结

本讲作为 C 语言入门的第一讲,我们从 C 语言的本质与发展历史出发,完成了开发环境的选型与认知,编写并运行了第一个 C 语言程序,系统拆解了 main 函数、库函数、ASCII 编码、字符串与\0、转义字符、语句分类、注释规范等核心基础概念。

这些内容是 C 语言学习的基石,后续所有的 C 语言语法、数据结构、算法实现都将基于这些基础展开,建议大家务必动手编写代码验证每个知识点,做到理论理解 + 代码实操双掌握,为后续的学习打下坚实的基础。

本系列笔记持续更新,下一讲将深入讲解 C 语言的数据类型、变量与常量相关知识点~

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/weixin_54085376/article/details/159727382

文章来源转载

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--