在这里插入图片描述

001-C语言:C语言的起源与发展历史

大家好,欢迎来到咱们零基础C语言入门教程的第一期视频!很多刚接触编程的同学,上来就直接敲代码、背语法,其实特别容易学懵。今天咱们不写代码,先好好聊聊C语言到底从哪来、为什么几十年过去了,它依然是编程界的常青树,不管是学Java、Python,还是做嵌入式、操作系统,C语言都是绕不开的基础。

首先,咱们把时间拉回上个世纪60年代。最早的计算机编程,用的都是机器语言和汇编语言。机器语言就是一堆0和1的二进制数字,完全靠数字指令控制电脑,普通人根本看不懂,写代码、改代码都特别麻烦,容错率极低。后来出现了汇编语言,用简单的英文缩写代替二进制,算是方便了一点,但它依然有个致命缺点:移植性极差。简单说就是,你在A型号电脑上写的汇编代码,换一台B型号电脑就完全用不了,每换一台设备都要重新写代码,开发效率极低。

当时主流的操作系统都是用汇编写的,最出名的就是Multics系统,但是这套系统臃肿、复杂,运行极不稳定。1969年,贝尔实验室的两名研究员肯·汤普森和丹尼斯·里奇,打算开发一套轻量化、简洁好用的操作系统,也就是后来的Unix系统。最开始他们想用高级语言开发,但当时的高级语言要么功能太复杂、不适合底层开发,要么运行效率太低,满足不了操作系统的性能需求。

为了适配Unix系统开发,1970年汤普森先改良出了B语言,B语言简洁小巧、运行速度快,专门用来开发底层系统。但B语言也有明显短板,它没有数据类型的区分,不支持结构体,功能不够完善,没办法满足复杂的系统开发需求。

到了1972年,丹尼斯·里奇在B语言的基础上,重新优化、迭代,正式推出了全新的编程语言,也就是我们今天学的C语言。C语言完美继承了B语言简洁、高效、贴近底层的优点,同时新增了丰富的数据类型、灵活的语法规则,既能开发系统底层程序,又能用来写小型应用软件,实用性直接拉满。

最早的C语言是专门为开发Unix系统诞生的,所以它天生就和操作系统、计算机底层深度绑定。1973年,汤普森和里奇用C语言彻底重写了Unix系统,这也是史上第一个用高级语言编写的操作系统,彻底打破了汇编垄断底层开发的局面。从这之后,C语言开始快速普及。

早期的C语言没有统一的官方标准,不同公司、不同编译器的C语言语法细节都不一样,代码兼容性很差。为了解决这个问题,1989年美国国家标准协会出台了第一套统一的C语言标准,也就是C89标准,这也是目前兼容性最广、零基础学习最通用的版本。之后1999年推出C99标准,新增了很多实用特性,2011年推出C11标准,进一步优化语法和安全性,但核心语法和C89基本一致。

截止到今天,C语言已经诞生50多年了,为什么它依然没有被淘汰?核心原因就是它的定位无可替代。Python、Java适合上层应用开发,运行效率低、依赖虚拟机;而C语言简洁高效、贴近硬件、可移植性强,操作系统、单片机、嵌入式、驱动开发、游戏引擎底层,全部都是C语言的主场。

简单总结一下:

  • C语言诞生于1972年,为Unix系统而生。
  • 从小众的系统开发语言,一步步成为全球通用的底层核心语言。
  • 是所有编程语言的基石。

学好C语言,不仅是学会一门语法,更是看懂计算机底层运行逻辑的关键。下一期咱们就来讲讲,C语言到底有哪些独特的特点和优势,为什么新手入门首选C语言!


002-C语言:C语言的特点与优势

哈喽大家好,欢迎回到C语言零基础教程第二期!上一期我们了解了C语言的发展历史,知道了它是一门经典的底层编程语言。今天我们就详细拆解一下,C语言到底有哪些特点和优势,为什么大学编程第一课必学C语言,为什么它能屹立编程界五十多年不倒,帮大家彻底搞懂学C语言的意义。

1. 语法简洁、自由度高、上手门槛低

很多新手害怕编程,觉得代码复杂难懂,但C语言的语法非常精炼,关键字只有32个,核心语法规则很少,没有冗余的复杂格式。不像Java、Python,有很多固定框架、冗余语法和格式限制。C语言主打“精简实用”,没有多余的语法糖,代码写出来干净利落。而且它的语法逻辑非常贴合人类的思维逻辑,零基础同学只要认真学,一周就能掌握基础语法,快速写出可用的程序。

2. 执行效率极高,贴近计算机底层

这是C语言最核心、不可替代的优势。我们常用的Python、Java,运行的时候都需要依赖虚拟机、解释器,代码运行前需要经过多层转换,会消耗大量系统资源,运行速度慢。而C语言是编译型语言,代码直接编译成计算机能直接识别的机器指令,没有中间转换环节,资源占用少、运行速度极快。

同时C语言支持指针、可以直接操作内存地址,能够直接对接计算机硬件,这是绝大多数高级语言做不到的。所以电脑操作系统、手机系统、单片机、智能家居、汽车嵌入式设备,全部都是用C语言开发的,只有C语言能精准控制硬件、实现高效的底层运行。

3. 可移植性强,跨平台适配性好

很多小众编程语言,只能在特定系统、特定编译器上运行,换个环境代码就报错。但C语言的标准统一,几乎所有的操作系统,Windows、Mac、Linux、嵌入式系统,都完美支持C语言编译运行。我们在Windows上写的C代码,稍微修改一下就能放到Linux、单片机上运行,代码复用率极高,这也是它能通用全球的核心原因之一。

4. 功能强大,应用场景极广

很多新手以为C语言只能写简单的小程序,其实大错特错。

  • 底层方面:Windows、Linux、安卓系统内核都是C语言编写。
  • 硬件方面:所有嵌入式、物联网、单片机设备都依赖C语言。
  • 软件方面:游戏引擎、数据库、网络服务底层,全部都是C语言开发。

可以说,只要是追求高性能、低功耗、底层控制的场景,首选一定是C语言。

5. 学习性价比极高,是所有语言的基石

编程的核心逻辑,变量、数据类型、循环、条件判断、函数、数组、指针,所有编程语言的核心逻辑全部源自C语言。只要你把C语言学透了,后续学Java、Python、C++、Go语言,基本都是举一反三,只需要熟悉新语言的语法格式,核心逻辑完全不用重新学。反之,直接学高层语言,永远搞不懂计算机底层原理,代码只会抄、不会懂。

当然C语言也有小缺点,比如没有封装、面向对象特性,不适合大型上层项目开发,安全性相对弱一点,但完全不影响它的核心地位。对于零基础同学来说,C语言是最好的入门语言,能帮你建立最正统的编程思维,看懂代码运行的本质。

总结一下:
C语言简洁高效、贴近底层、可移植性强、通用性广、学习性价比极高。它或许不是最时髦的语言,但一定是最基础、最实用、最值得新手深耕的语言。下一期我们就带大家搞懂核心问题:计算机到底是怎么执行我们写的代码的,彻底打通编程底层逻辑!


003-C语言:计算机是如何执行代码的?

大家好,欢迎来到第三期C语言零基础教程!前面两期我们了解了C语言的历史和优势,很多同学学编程只会埋头敲代码,但完全不知道代码是怎么被电脑识别、运行的。今天我们不讲语法、不敲代码,彻底给大家讲明白:我们写的C语言代码,计算机到底是怎么一步步执行的,听懂这期,你就比80%的新手更懂编程本质。

首先大家要记住一个核心常识:计算机只认识0和1,完全看不懂英文和汉字。我们写的C语言代码,比如intprintf、变量这些,都是人类能看懂的高级语言,计算机直接识别不了。想要让电脑运行代码,就必须把我们写的高级语言代码,转换成计算机能读懂的二进制机器指令,这个核心过程就是我们今天要讲的代码执行全过程。

整个代码执行流程,分为四个核心步骤:编写代码、编译代码、链接文件、运行程序。我们一步步拆解,通俗易懂讲清楚。

第一步:编写代码

这是我们程序员做的事情。我们用编译器、记事本、开发工具,写出后缀为.c的C语言源文件,这里面的所有代码都是人类可读的文本格式,电脑暂时无法执行,只能保存编辑。

第二步:编译

这是电脑的第一个核心操作。编译器会读取我们写的.c源文件,逐行扫描代码,检查语法错误。如果代码写错了,编译器会直接报错,提示语法问题;如果代码没有问题,编译器就会把每一行C语言代码,翻译成对应的二进制机器指令,最终生成一个后缀为.obj的目标文件。大家注意,obj文件已经是机器能看懂的指令了,但它还不能直接运行。

第三步:链接

为什么不能直接运行?因为我们写的代码不是完全独立的,会用到很多系统自带的功能。比如我们常用的printf打印函数,不是我们自己写的,是系统标准库里面的函数。我们的代码只写了调用逻辑,没有写函数的具体实现,所以需要第三步:链接。

链接的作用,就是把我们编译生成的obj目标文件,和系统的标准库文件、依赖文件合并整合,补齐所有缺失的代码逻辑,最终生成一个完整的、可以直接运行的可执行文件,也就是Windows上后缀为**.exe**的文件。

第四步:运行程序

我们双击exe可执行文件,操作系统就会把这个文件加载到电脑内存中,CPU逐行读取里面的二进制机器指令,然后执行对应的操作,比如打印文字、计算数据、弹窗显示,最终呈现出我们看到的程序效果。

通俗类比:

  • 写代码 = 写一份中文菜谱
  • 编译 = 把中文菜谱翻译成机器能看懂的专属步骤
  • 链接 = 补齐菜谱里缺少的辅料、工具
  • 运行 = 厨师按照完整菜谱做菜,出最终结果

同时给大家区分一个关键知识点:C语言是编译型语言,一次性全部翻译、链接完成,生成可执行文件后再运行,运行速度快。而Python是解释型语言,边翻译边运行,速度更慢,这也是C语言效率更高的根本原因。

很多新手写代码报错,看不懂报错信息,其实大概率就是两个问题:要么是编译阶段语法错误,要么是链接阶段缺少依赖。听懂今天的流程,后续报错你就能快速定位问题。

简单复盘:
写代码(.c文件)→ 编译(生成.obj文件)→ 链接(生成.exe文件)→ 内存加载运行。这就是计算机执行C语言代码的完整全过程。下一期我们就手把手教大家搭建C语言开发环境,正式开启实操敲代码!


004-C语言:开发环境搭建(Windows)

大家好,欢迎来到第四期C语言零基础教程!前面三期我们铺垫完所有理论知识,从今天开始,我们正式进入实操环节。想要写C语言代码、让电脑执行程序,第一步必须搭建好开发环境。今天我手把手带大家在Windows电脑上搭建C语言环境,全程零基础友好,跟着操作,百分百成功。

首先跟大家说明一下,新手学C语言,最推荐、最简单、兼容性最好的工具就是 Dev-C++。这款软件体积小、安装简单、无需复杂配置、自带编译器,专门适配零基础新手,不用配置环境变量、不用复杂命令,傻瓜式操作,完全适合入门学习。像VS、CLion这些专业工具,配置复杂、功能冗余,新手很容易出错,不推荐刚开始使用。

安装步骤

  1. 软件下载:大家直接在浏览器搜索“Dev-C++ 官方版”,一定要下载正版无捆绑的安装包,避免下载到带广告、捆绑软件的盗版安装包。下载完成后,我们得到一个标准的安装程序,大小只有几十兆,非常轻便。
  2. 安装流程:全程默认下一步即可。
    • 双击安装包,首先选择安装语言,默认简体中文,点击确定。
    • 然后同意用户协议。
    • 选择安装路径,这里建议大家不要安装在C盘,可以选择D盘、E盘新建一个文件夹,比如命名为C语言学习,方便后续查找和管理。
    • 剩余的所有选项全部默认下一步,等待一分钟左右即可安装完成。
  3. 初始设置:安装完成后,打开软件,第一次启动会弹出基础设置界面,默认简体中文、默认字体,直接确认即可,不需要额外修改任何参数。到这里,我们的C语言开发环境就搭建完成了,是不是特别简单?

测试环境

接下来教大家测试环境是否正常,同时教大家新建第一个代码文件。

  1. 首先点击软件左上角 【文件】-【新建】-【源代码】,此时会弹出一个空白编辑页面,这就是我们写代码的地方。大家记住,我们所有的C语言代码,都要写在这个空白页面里。
  2. 这里先给大家一段测试代码,大家直接复制粘贴,用来验证环境是否正常:
#include <stdio.h>
int main()
{
    printf("环境搭建成功!");
    return 0;
}
  1. 粘贴完成后,我们需要保存文件,点击左上角保存按钮,文件名必须后缀为**.c**,比如test.c,保存类型选择所有文件,点击保存。新手一定要注意,必须加.c后缀,否则电脑无法识别为C语言代码,无法编译运行。
  2. 保存完成后,点击顶部菜单栏的 【运行】 按钮,或者直接按快捷键 F11,软件就会自动完成编译、链接、运行全过程。此时弹出黑色控制台窗口,显示“环境搭建成功!”,就说明你的开发环境完全正常,没有任何问题。

注意事项

最后给大家讲几个新手常用的基础操作和注意事项:

  1. 每次写新代码,都要新建源代码文件、重新保存,不要在同一个文件里反复修改。
  2. 文件名不要用中文、空格、特殊符号,尽量用英文和数字,避免编译报错。
  3. 运行代码前必须保存文件,未保存的代码无法编译执行。
  4. 如果弹出报错,大概率是文件未保存、后缀错误、代码格式错乱三个问题。

整体来说,Dev-C++完美适配零基础入门,操作简单、零配置、零门槛,足够支撑我们学完所有C语言基础语法。后续所有课程的代码,我们都将在这个工具上实操。下一期,我们就正式编写大家的第一个标准C程序:Hello World!开启真正的编程之旅!


005-C语言:Hello World!你的第一个C程序

大家好,欢迎来到第五期C语言零基础教程!上一期我们已经成功搭建好开发环境,今天我们就正式编写所有程序员的启蒙代码——Hello World,手把手带大家写完、读懂、运行第一个标准C语言程序,彻底入门编程实操。

首先大家新建一个源代码文件,保存为hello.c,接下来我直接给大家完整的标准Hello World代码,这是最规范、最标准的零基础入门代码,大家先抄下来,我逐行给大家拆解每一句的含义,保证每个人都能听懂。

#include <stdio.h>
int main()
{
    // 第一个C语言程序
    printf("Hello World!欢迎学习C语言!");
    return 0;
}

代码抄写完成后,按F11运行,大家可以看到黑色窗口成功打印出了文字,这就是我们第一个成功运行的C程序!接下来我们逐行拆解代码,搞懂每一行代码的作用,不做只会抄代码的小白。

代码逐行解析

  1. #include <stdio.h>:这行代码叫做头文件包含。大家可以简单理解为:调用工具包。stdio.h是C语言的标准输入输出头文件,我们用到的printf打印函数,就存放在这个头文件里面。如果不写这行代码,编译器就不认识printf是什么,程序直接报错。所有需要输入、输出文字的程序,都必须包含这行头文件,这是固定格式,必须熟记。
  2. int main():这是程序的主函数,也是整个程序的入口。大家记住一个铁律:所有C语言程序,都是从main函数开始执行的,没有main函数的程序,无法运行。int代表这个函数最终会返回一个整数,main是函数名,固定写法,不能修改、不能写错,括号()也是固定格式。
  3. { }:紧接着的大括号,是函数的代码体,所有属于main函数的执行代码,都必须写在这一对大括号中间。左右大括号必须成对出现,缺一不可,新手最容易犯的错误就是漏写括号、括号不匹配,大家一定要注意。
  4. printf("...");:这是我们的核心执行语句。printf是打印函数,作用是把双引号里面的内容,输出打印到控制台窗口。大家可以自定义双引号里的文字,比如改成“我学会C语言了”,运行后就会打印对应的内容。重点注意:每一句C语言执行语句,结尾必须加分号 ;,分号代表语句结束,漏写分号是新手第一大报错原因。
  5. // ...:我在代码里加了一行注释,//开头的内容,是注释语句,编译器不会执行,只是用来给程序员看的备注,方便理解代码,这个我们下一期详细讲解。
  6. return 0;:代表程序正常结束、返回0,标识程序顺利运行完毕,没有报错。这是main函数的固定结尾格式,标准程序必须加上。

到这里,整段代码的逻辑就通了:引入打印工具包 → 程序从main函数开始 → 执行打印语句 → 程序正常结束。大家可以自己修改引号里的文字,自由尝试打印不同内容,熟悉代码格式。

新手必记规范

最后给大家总结新手必记的代码规范:

  • 头文件不能少
  • main函数是入口
  • 语句末尾加分号
  • 大括号成对写
  • 符号全部为英文符号

中文符号、漏分号、漏括号,是新手三大致命错误,一定要规避。今天我们成功写出并读懂了第一个C语言程序,正式迈入编程大门。下一期我们就深入讲解代码编译、链接、可执行文件生成的完整细节,搞懂程序运行的底层全过程!


006-C语言:编译、链接与可执行文件的生成过程

大家好,欢迎来到第六期C语言教程!第三期我们简单聊过代码执行流程,今天结合我们上一期写的Hello World代码,超详细、手把手拆解编译、链接、可执行文件生成的完整全过程,把底层逻辑彻底讲透,让大家不仅会写代码,更懂代码如何运行。

首先我们回顾核心前提:我们写的后缀为.c的源文件,是人类可读的文本代码,CPU完全看不懂。想要电脑运行程序,必须经过预处理、编译、汇编、链接四个核心步骤,最终生成exe可执行文件,每一步都有专属作用,我们逐个拆解。

1. 预处理 (Preprocessing)

这是代码编译的前置操作,编译器会优先处理代码中#开头的指令,最典型的就是我们的#include头文件。预处理阶段,编译器会直接把stdio.h头文件的所有代码内容,完整复制粘贴到我们的当前代码文件中。同时会删除所有注释、替换宏定义、处理条件编译。简单说,预处理就是整理代码、补齐代码、清理冗余内容,生成一份干净完整的代码文件,没有任何注释和缺失内容。

2. 编译 (Compilation)

整理好代码后,进入真正的编译阶段。编译器会逐行扫描预处理后的代码,进行严格的语法检查、语义分析。如果我们少写分号、括号不匹配、关键字写错,编译阶段就会直接报错,终止运行。语法无误后,编译器会把高级C语言代码,翻译成对应的汇编代码,生成汇编文件。这一步是从人类语言向机器语言过渡的关键步骤。

3. 汇编 (Assembly)

汇编阶段会把编译生成的汇编代码,彻底转换成计算机能识别的二进制机器指令,最终生成一个后缀为**.obj**的目标文件。obj文件是二进制文件,里面全是0和1的机器指令,电脑可以识别指令,但这个文件依然不能直接双击运行。原因很简单,obj文件只包含我们自己写的代码指令,不包含系统库函数的实现代码,比如printf函数的具体执行逻辑,就没有包含在内。

4. 链接 (Linking)

链接,这是最后一步、也是最关键的一步。链接的核心作用就是补齐缺失的代码、整合所有依赖。链接器会把我们的obj目标文件,和系统自带的标准库文件进行合并,将printfreturn这些系统函数的底层实现代码,整合到我们的程序中,补齐所有缺失逻辑。

同时链接阶段会处理所有的地址引用、修复代码中的地址偏移,最终整合出一个完整、独立、无缺失的程序文件,也就是Windows系统下的**.exe**可执行文件。这个exe文件包含了程序运行需要的所有代码、所有依赖,不需要任何额外资源,双击就能直接运行。

常见报错区分

这里给大家区分两个新手最容易混淆的报错:

  • 编译报错:大概率是语法写错了,少分号、拼错关键字,代码格式错误。
  • 链接报错:大概率是依赖缺失、函数未定义、文件损坏,代码语法没问题,但是缺资源无法运行。

听懂这期,大家以后报错就能精准定位问题。我们平时在Dev-C++点击运行、按F11快捷键,软件是自动帮我们完成了预处理、编译、汇编、链接全部步骤,一键生成exe文件并运行,所以我们感知不到过程,但底层这四步一步都不会少。

完整流程复盘:
手写.c源文件 → 预处理(整理补齐代码) → 编译(转汇编、查语法) → 汇编(转二进制、生成obj文件) → 链接(整合库文件、生成exe文件) → 加载运行。

到这里,程序生成和运行的底层逻辑就彻底讲透了。下一期我们专门讲解代码注释的作用和规范,教大家写出规范、易读的高质量代码!


007-C语言:注释的作用与规范(单行/多行)

大家好,欢迎来到第七期C语言零基础教程!今天我们学习一个看似简单、实则超级重要的知识点——代码注释。注释是编程的基础规范,新手一定要从一开始养成写注释的习惯,不仅能帮自己读懂代码,还能让别人快速看懂你的程序,工作、学习中都必不可少。

什么是注释?

首先明确注释的核心定义:注释是写给程序员看的备注文字,编译器完全忽略注释内容,不会编译、不会执行、不影响程序运行。简单说,注释就是纯文字笔记,用来解释代码功能、标注代码逻辑,只起到说明作用,对程序运行结果没有任何影响。

C语言一共支持两种注释格式:单行注释和多行注释,两种格式各有适用场景,我们逐个讲解,搭配示例代码,方便大家理解使用。

1. 单行注释 //

两个英文斜杠开头,作用是注释当前这一行,//后面的所有内容都会被判定为注释,失效不执行。单行注释是我们日常使用最多的注释格式,适合简短备注、单行代码说明。

实操示例:

#include <stdio.h>
int main()
{
    // 本行是单行注释:打印欢迎语句
    printf("学习单行注释!"); // 行尾注释:解释当前打印功能
    return 0; // 程序正常结束
}

大家运行代码可以发现,所有//后面的文字都不会显示,程序只执行打印功能。单行注释有两个使用规范:

  1. 只能注释当前行,不能跨行。
  2. 适合简短说明,不要写大段文字。我们可以单独一行写注释,也可以写在代码行的末尾,都是标准规范。

2. 多行注释 /* ... */

/*开头,以*/结尾,中间所有的内容,不管多少行、多少文字,全部都会被判定为注释,不会执行。多行注释适合大段说明、程序头部备注、批量注释多行代码的场景。

实操示例:

#include <stdio.h>
int main()
{
    /*
    这是多行注释
    功能:演示多行注释的使用方法
    作者:零基础学习者
    时间:2026年
    所有中间内容均不执行
    */
    printf("学习多行注释!");
    return 0;
}

大家可以看到,中间大段的文字全部被注释失效,只有打印语句生效。这里重点提醒大家一个新手易错点:多行注释不能嵌套使用,不能在/* */里面再嵌套一对/* */,会直接报错,单行注释没有这个限制。

注释的核心作用

  1. 方便自己复盘:我们写的代码,过几天大概率会忘记逻辑,注释可以快速回忆代码功能。
  2. 方便他人阅读:团队开发中,带注释的代码才是规范代码,别人能快速看懂你的逻辑。
  3. 方便调试代码:我们可以通过注释暂时屏蔽某段代码,排查报错问题,不用删除代码。

书写规范总结

  1. 注释语言简洁明了,不写废话,精准说明代码功能。
  2. 关键逻辑、核心代码必须加注释,简单重复代码不用过度注释。
  3. 注释独占一行或行尾对齐,保持代码整洁。
  4. 禁止中文符号、禁止乱加注释。

很多新手觉得注释没用、懒得写,这是非常错误的习惯。规范的注释是程序员的基本素养,从今天开始,大家写代码一定要养成加注释的习惯。下一期我们学习编程核心基础:关键字与标识符命名规则!


008-C语言:关键字与标识符命名规则

大家好,欢迎来到第八期C语言零基础教程!今天我们学习C语言的语法根基:关键字标识符命名规则。这是所有变量、函数、代码命名的基础,90%的新手命名报错、语法报错,都是因为不懂这两个知识点,今天一次性给大家讲清楚。

1. 关键字 (Keywords)

关键字是C语言系统提前定义好、自带特殊含义的专用单词,是编程语言的固定词汇,有专属的语法功能,我们不能拿来给自己的变量、函数、文件命名

C语言标准一共规定了32个关键字,全部都是小写英文,比如我们之前见过的intreturn,后续会学到的charfloatifelseforwhile等,全部都是关键字。每个关键字都有专属固定作用,比如int代表整型、return代表返回值、if代表判断。

核心规则: 关键字是系统专用词,有固定用途,禁止自定义使用。不能用int当变量名、不能用return当文件名,一旦占用关键字命名,程序直接编译报错。大家不用一次性背完32个关键字,后续学到哪个就记住哪个,循序渐进即可。

2. 标识符 (Identifiers)

简单来说,标识符就是我们程序员自己给变量、函数、文件、数组起的名字,所有我们自定义的名称,统一叫做标识符。比如我们定义一个变量a、变量num,新建的函数test,这些都是标识符。

标识符不能随便乱起,必须严格遵守C语言命名规则,这是硬性语法规范,违规直接报错,我给大家总结四条核心规则,全覆盖、无遗漏。

  1. 组成字符限制:标识符只能由字母、数字、下划线三种字符组成,不能包含汉字、空格、特殊符号、标点符号。
    • ✅ 合法:num, max, _age, sum123
    • ❌ 非法:num#, max 1, 年龄, a@b
  2. 首字符限制:标识符不能以数字开头。可以用字母、下划线开头,不能用数字开头。
    • ✅ 合法:a1, _num
    • ❌ 非法:123a, 3max
  3. 大小写敏感:标识符严格区分大小写。C语言是大小写敏感语言,大写A和小写a是两个完全不同的标识符。比如Numnum是两个不同的变量,大家写代码时一定要统一大小写,避免命名混乱。
  4. 禁用关键字:标识符绝对不能使用C语言关键字。不能用系统专用词自定义命名,这是最基础的规则,避免和系统语法冲突。

行业规范建议

除了硬性语法规则,还有三个新手必守的行业规范,让你的代码更专业:

  1. 见名知意:尽量用英文单词、拼音缩写,比如年龄用age、分数用score、总和用sum,不要用abcx这种无意义命名,后期完全看不懂代码。
  2. 小写+下划线:尽量小写命名,多个单词用下划线分隔,比如student_agemax_score,规范整洁。
  3. 禁止中文命名:虽然部分编译器支持,但不通用、不规范、极易报错。

示例代码:

#include <stdio.h>
int main()
{
    int num = 10;       // 合法:字母开头
    int _score = 99;    // 合法:下划线开头
    // int 123a = 5;    // 非法:数字开头
    // int int = 100;   // 非法:使用关键字
    
    printf("%d %d", num, _score);
    return 0;
}

大家可以自行注释切换测试,直观感受命名规则。总结一下:关键字是系统专用词,不能乱用;标识符是自定义名称,必须遵守字母数字下划线、非数字开头、不占用关键字、区分大小写的规则。学好这节课,大家就能彻底规避90%的命名报错,写出规范合规的代码。下一期我们开始学习核心基础:C语言数据类型概览!


009-C语言:数据类型概览(整型、浮点、字符等)

大家好,欢迎来到第九期C语言零基础教程!从今天开始,我们正式进入C语言核心语法阶段,首先学习数据类型。编程的本质就是处理数据,而数据类型就是用来区分不同数据、存储不同内容的基础,所有变量、运算、逻辑都离不开它,是重中之重。

首先给大家讲明白数据类型的核心作用:电脑存储数据需要占用内存空间,不同的数据,占用的空间大小、存储格式完全不一样。数据类型就是用来规定:这个数据是什么格式、占用多少内存、能存储多大范围的数值,精准合理的利用电脑内存资源。

C语言基础数据类型主要分为三大类:整型、浮点型、字符型,今天我们逐个讲解定义、格式、适用场景,搭配示例代码,通俗易懂讲解清楚。

1. 整型 (int)

整型就是整数类型,专门用来存储没有小数的整数,比如1、10、99、-5、0,所有整数都用int存储。int是最常用、最基础的数据类型,默认占用4个字节内存,存储范围极大,完全满足日常整数计算需求。

实操示例:

#include <stdio.h>
int main()
{
    // 定义整型变量,存储整数
    int age = 18;
    int score = 95;
    int num = -10;
    
    printf("年龄:%d\n", age);
    printf("分数:%d\n", score);
    printf("数字:%d\n", num);
    
    return 0;
}

注意:整型输出格式符是%d,只能输出整数,不能输出小数。

2. 浮点型 (float / double)

浮点型,分为float单精度浮点、double双精度浮点,专门用来存储带小数的数值,比如3.14、99.9、0.666。

  • float:单精度浮点,占用4个字节内存,保留6-7位有效小数,适合普通小数存储。
  • double:双精度浮点,占用8个字节内存,保留15-16位有效小数,精度更高,适合高精度计算,日常开发优先用double

浮点型输出格式符为%f

实操示例:

#include <stdio.h>
int main()
{
    // 浮点型存储小数
    float pi = 3.14f;      // float赋值建议末尾加f
    double height = 175.5;
    
    printf("圆周率:%f\n", pi);
    printf("身高:%f\n", height);
    
    return 0;
}

注意float赋值建议末尾加f,区分double类型,避免精度丢失。

3. 字符型 (char)

字符型专门用来存储单个字符,比如字母a、数字字符1、符号#、大写Z。字符型占用1个字节内存,是占用空间最小的数据类型。字符赋值必须用单引号包裹,且只能放一个字符,不能放多个字符、不能放字符串。字符输出格式符为%c

实操示例:

#include <stdio.h>
int main()
{
    char ch1 = 'A';
    char ch2 = '6';
    char ch3 = '#';
    
    printf("字符1:%c\n", ch1);
    printf("字符2:%c\n", ch2);
    printf("字符3:%c\n", ch3);
    
    return 0;
}

易错点:很多新手容易混淆:字符数字和整型数字不一样,'6'是字符,6是整数,存储逻辑完全不同,大家一定要区分开。

总结:

  • int 存整数
  • float / double 存小数
  • char 存单个字符

三种基础数据类型,覆盖了我们90%的基础数据存储场景。后续我们所有的变量定义、数据运算,都是基于这三种类型展开。大家可以自行修改代码中的数值,测试不同数据的输出效果,熟悉每种类型的特点。下一期我们详细讲解变量的定义、初始化和使用方法,彻底打通数据存储的核心逻辑!


010-C语言:变量是什么?变量的定义与初始化

大家好,欢迎来到第十期C语言零基础教程!上一期我们学完了数据类型,今天我们学习编程最核心、最基础的概念——变量。可以说,没有变量就没有编程,所有的程序运算、数据存储、逻辑处理,全部都依赖变量,今天带大家彻底搞懂变量的本质、定义、初始化和使用规范。

什么是变量?

首先用大白话给大家解释:变量就是电脑内存中用来存储数据的小盒子。我们生活中用盒子装物品,编程中用变量装数据,整数、小数、字符,都可以放到变量这个盒子里。

变量最大的特点就是可变,盒子里的数据可以随时修改、随时替换,这就是为什么叫变量。和变量对应的是常量,常量的值固定不变,变量的值可以自由修改,程序运行中所有动态变化的数据,都需要用变量存储。

想要使用变量,必须遵守两个步骤:先定义,后使用,绝对不能直接使用未定义的变量,这是C语言的硬性规则。

1. 变量的定义

标准语法:数据类型 变量名;

  • 数据类型:就是我们上一期学的intfloatchar,决定盒子的大小和存储类型。
  • 变量名:就是我们给盒子起的名字,必须遵守标识符命名规则。

我们先看基础变量定义示例:

#include <stdio.h>
int main()
{
    // 定义变量:只开辟空间,不赋值
    int num;
    float price;
    char ch;
    
    // 给变量赋值
    num = 100;
    price = 99.9;
    ch = 'B';
    
    // 输出变量值
    printf("整数:%d\n", num);
    printf("小数:%f\n", price);
    printf("字符:%c\n", ch);
    
    return 0;
}

这种先定义、后赋值的方式,是变量的基础使用方式。定义变量时,电脑会自动在内存中开辟对应大小的空间,等待存放数据。

2. 变量的初始化

很多新手分不清定义和初始化,其实初始化就是:定义变量的同时直接赋值,一步到位,更加简洁规范,也是我们开发中最常用的方式。

变量初始化标准格式:数据类型 变量名 = 初始值;

初始化实操示例:

#include <stdio.h>
int main()
{
    // 定义变量并直接初始化赋值
    int age = 20;
    double height = 172.3;
    char sex = 'M';
    
    printf("年龄:%d\n", age);
    printf("身高:%f\n", height);
    printf("性别:%c\n", sex);
    
    return 0;
}

⚠️ 新手大坑提醒:
未初始化的局部变量,里面是随机垃圾值。如果只定义变量、不赋值、不初始化,直接输出使用,会得到一串随机乱码数字,程序极易出错。所以专业规范中,变量尽量初始化使用,避免垃圾值影响程序运行。

同时我们可以批量定义多个变量,格式灵活:int a,b,c; 批量定义,int x=1,y=2,z=3; 批量初始化,简化代码书写。

3. 变量的值可修改

接下来演示变量的核心特性:值可修改。

#include <stdio.h>
int main()
{
    int score = 80;
    printf("修改前分数:%d\n", score);
    
    // 重新赋值,覆盖旧值
    score = 95;
    printf("修改后分数:%d\n", score);
    
    return 0;
}

运行代码可以看到,变量的值可以随时被新数值覆盖修改,这就是变量的核心作用,存储动态变化的数据。

总结

到这里,变量的基础知识点就全部讲完了,这是后续所有运算、循环、逻辑代码的基础,大家一定要熟练掌握定义、初始化、赋值、修改的全套操作。

  • 变量是存储数据的内存空间,值可修改。
  • 使用规则为先定义后使用。
  • 推荐定义时初始化,避免随机垃圾值。
  • 变量命名遵守标识符规则,数据类型匹配存储内容。
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐