引言

  “在编程学习的路上,记忆有时会‘打退堂鼓’,遗忘似乎成了常态。写博客——这不仅是为了对抗遗忘,更是为了更深刻地理解。每次梳理笔记、解释概念,其实都是对自己认知的‘再调试’。正如古语‘教学相长’,教会别人之前,往往自己要先通透;而在书写的过程中,那些模糊的知识点也渐渐清晰起来。

  我想如果我早一点养成这样的习惯,或许我不会在‘学了忘、忘了再学’中循环。所以这次,我决定从起点开始,用文字重建自己的知识体系——既为温故,更为知新。”

目录

引言

一、C语言的历史定位:从Unix诞生的系统级语言

二、理解编译的本质:从源代码到可执行文件的旅程

三、开发环境选择VS2022

四、程序的心脏:main函数及其铁律

五、第一个C语言程序及对printf的解释

六、代码的“建筑材料”:关键字与标识符

        C语言的32个关键字

七、字符的数字化身:ASCII编码

八、字符串与隐藏的终结者:\0

九、改变含义的符号:转义字符

十、程序的句子:语句的五种形态

十一、为代码注入灵魂:注释的艺术

“写注释一定程度上反应了程序作者的素养”,这句话让我重新审视自己的编码习惯。良好的注释是代码可维护性的基石。

关于注释最近网上有一个题目:

十二、构建思维的框架:三大程序结构与九种控制语句

总结


一、C语言的历史定位:从Unix诞生的系统级语言

  • 起源:1972年,贝尔实验室的丹尼斯·里奇在B语言基础上设计,最初用于重写Unix操作系统。

  • 核心关系:C语言与Unix系统相互成就。Unix的普及推动了C的广泛应用,C的可移植性使Unix得以移植到不同机器。

  • 现状:至今仍在系统编程、嵌入式等领域占据主导地位,在TIOBE等语言排行榜中长期位列前三。

二、理解编译的本质:从源代码到可执行文件的旅程

C语言是⼀门编译型计算机语言,C语言源代码都是文本文件,文本文件本⾝无法执⾏,必须通过编译器翻译和链接器的链接,生成⼆进制的可执行⽂件,可执行文件才能执行。 C语言代码是放在 .c 为后缀的⽂件中的,要得到最终运行的可执行程序,中间要经过编译和链接2个过程。

核心步骤:

.c源文件 -> 编译器编译 -> .obj目标文件 -> 链接器链接(整合库文件等) -> .exe可执行文件

三、开发环境选择VS2022

对几种主流IDE进行对比:

  • VS2022 :功能强大、生态完善、企业主流、安装便捷。缺点是体积庞大。

  • 其他选择:XCode (mac)、Clion (跨平台、付费)、Dev C++ (轻量但老旧)。

新手建议:对于Windows用户,VS2022社区版是平衡了学习曲线、功能与未来就业需求的最佳起点。其“一键安装”特性让你能将精力集中在语言本身,而非环境配置上。

四、程序的心脏:main函数及其铁律

这是任何C程序的唯一入口

int main() {
    // 程序从此开始执行
    return 0; // 向操作系统返回0,表示正常结束
}

必须铭记的三个铁律

  1. 一个程序有且仅有一个main函数。

  2. 即使项目有多个.c文件,也只能有一个文件包含main函数。

  3. main函数的int返回类型与最后的return 0;必须前后呼应。

常见错误备忘录:

  • main 误写为 mian

  • 遗漏 main 后的括号 ()

  • 误用中文符号(, “”),在编译器上很明显就可以看出,同时语法错误编译器会有下划线提示

  • 语句结尾遗漏分号 ;

五、第一个C语言程序及对printf的解释

#include<stdio.h>
int main()
{
   printf("The first C project");
   return 0;
}

printf 是大多数C程序员用的第一个函数:

  1. 它是一个标准库函数,功能是将格式化数据打印到标准输出(通常是屏幕)。
  2. 怎么使用:必须包含其声明所在的头文件 #include <stdio.h>

库函数背后的设计哲学
C语言通过标准库将常用功能(如输入输出、数学计算、字符串操作)标准化。这避免了程序员重复造轮子,体现了“站在巨人肩膀上”的工程思想。理解这一点,就能明白为什么学习C语言不仅要学语法,还要熟悉其标准库。

想要提前了解参考下面的链接:

​​​​​​https://cplusplus.com/reference/clibrary/

六、代码的“建筑材料”:关键字与标识符

C语言中有⼀批保留的名字的符号,比如: int if return ,这些符号被称为保留字或者关键
字。
关键字都有特殊的意义,是保留给C语言使用的;
程序员自己在创建标识符的时候是不能和关键字重复的;
关键字也是不能自己创建的。
C语言的32个关键字如下:

还有⼀些关键字⼤家可以去了解⼀下,不过使用最多的还是上⾯的32个关键字。
注: https://zh.cppreference.com/w/c/keyword (C语⾔关键字的全部介绍)

七、字符的数字化身:ASCII编码

在键盘上可以敲出各种字符,如:a,q,@,#等,这些符号都被称为字符,C语言中字符是⽤单引号括起来的,如:'a','b','@'。 我们知道在计算机中所有的数据都是以二进制的形式存储的,那这些字符在内存中分别以什么样的二进制存储的呢?如果我们每个人给这些字符中的每个字符编⼀个二进制序列,这个叫做编码,为了方便大家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了⼀个标准 ASCII 编码,C 语言中的字符就遵循了 ASCII 编码的方式。
我们不需要记住所有的ASCII码表中的数字,使⽤时查看就可以,不过我们最好能掌握⼏组特殊的数据:
字符A~Z的ASCII码值从65~90
字符a~z的ASCII码值从97~122
对应的大小写字符(a和A)的ASCII码值的差值是32,利用这个信息可以实现字符的大小写转换:
#include<stdio.h>
int main()
{
	char ch;
	scanf("%c", &ch);//输入一个字符
	if (ch >= 97 && ch <= 122)//判断是否为小写字母
		printf("%c", ch - 32);//利用ch-32,将小写转换为大写
	else
		printf("%c", ch);
	return 0;
}
数字字符0~9的ASCII码值从48~57
换⾏ \n 的ASCII值是:10
在这些字符中ASCII码值从0~31 这32个字符是不可打印字符,无法打印在屏幕上观察(可以自己尝试操作一下)
#include<stdio.h>
int main()
{
	int ch =7;
	printf("%c", ch);
	return 0;
}

运行这串代码会发现有响铃声。

八、字符串与隐藏的终结者:\0

C语言中如何表示字符串呢?使用双引号括起来的⼀串字符就被称为字符串,如:"abcdef",就是⼀个字符串,字符串的打印格式可以使⽤ %s 来指定。
尝试运行一下这串代码会发现什么呢?
#include<stdio.h>
int main()
{
	char arr1[] = { 'a', 'b', 'c' };     // 字符数组,无\0,用%s打印会导致越界访问随机值
	char arr2[] = "abc";                // 字符串,实际存储为 {'a', 'b', 'c', '\0'}
	printf("%s\n", arr1);
	printf("%s\n", arr2);
}

核心概念:C语言中,字符串总是以空字符 '\0'(ASCII值为0)作为结束标志。所有标准字符串处理函数(如strlenstrcpy)都依赖这个约定。

九、改变含义的符号:转义字符

  也许在前面的代码中你看到 \n , \0 很纳闷是啥。其实在字符中有⼀组特殊的字符是转义字符,转义字符顾名思义:转变原来的意思的字符。

  • 其中常用转义字符

    • \n:换行

    • \t:制表符

    • \\:表示一个反斜杠本身

    • \":在字符串内表示双引号

  • 高级形式

    • \ddd:八进制ASCII码(如 \130 表示 'X'

    • \xdd:十六进制ASCII码(如 \x30 表示 '0'

逃脱环节 - cppreference.com

十、程序的句子:语句的五种形态

C程序由语句构成,文档(P16-P18)将其分为五类:

  1. 空语句:只有一个分号 ;

  2. 表达式语句:表达式后加 ;,如 b = a + 5;

  3. 函数调用语句:调用函数后加 ;,如 printf("hehe");

  4. 复合语句(代码块):由 {} 包裹的多条语句,被视为一个逻辑单元。

  5. 控制语句:控制程序流向(如 ifforbreak),是后续学习的重点。

这种分类帮助我们从更结构化的视角看待代码,而非一连串随意的指令。

十一、为代码注入灵魂:注释的艺术

  • 目的:给(自己或他人)看,解释代码意图,而非描述代码本身。

  • 两种形式

    • 多行注释/* 注释内容 */不支持嵌套

    • 单行注释// 注释内容 (C99标准引入)。

  • 重要原则:注释不能写在字符串字面量内(如 "//" 就是字符串的一部分)。

“写注释一定程度上反应了程序作者的素养”,这句话让我重新审视自己的编码习惯。良好的注释是代码可维护性的基石。

关于注释最近网上有一个题目:
#include<stdio.h>
int main()
{
	int a = 0, b = 0;
	a = 10;            /*a赋值*/
	b = 20;          /*给b赋值*/
	printf("%d", a + b);
	return 0;
}
#include<stdio.h>
int main()
{
	int a = 0, b = 0;
	a = 10;            /*a赋值
	b = 20;            给b赋值*/
	printf("%d", a + b);
	return 0;
}

你有没有发现什么不同呢?运行看看结果怎么样。

十二、构建思维的框架:三大程序结构与九种控制语句

C语言支持:

  • 三大结构:顺序、选择(分支)、循环。

  • 九种控制语句

    • 分支:ifswitch

    • 循环:do whilewhilefor

    • 转向:breakgotocontinuereturn

总结

以上是C语言的常见概念,希望大家看完之后能试着自己在编译器上敲一敲,试一试。同时推荐几个初学者可以尝试刷题的网站,编程语言的学习不应该只有语言,也需要进行一定的刷题。

牛客网:https://www.nowcoder.com/ta/beginner-programmers-v1#:~:text

牛客网在线编程_算法学习篇_新手入门130

蓝桥云课: 题库 - 蓝桥云课

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐