【C语言入门到精通】-基础篇

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语言代码,比如int、printf、变量这些,都是人类能看懂的高级语言,计算机直接识别不了。想要让电脑运行代码,就必须把我们写的高级语言代码,转换成计算机能读懂的二进制机器指令,这个核心过程就是我们今天要讲的代码执行全过程。
整个代码执行流程,分为四个核心步骤:编写代码、编译代码、链接文件、运行程序。我们一步步拆解,通俗易懂讲清楚。
第一步:编写代码
这是我们程序员做的事情。我们用编译器、记事本、开发工具,写出后缀为.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这些专业工具,配置复杂、功能冗余,新手很容易出错,不推荐刚开始使用。
安装步骤
- 软件下载:大家直接在浏览器搜索“Dev-C++ 官方版”,一定要下载正版无捆绑的安装包,避免下载到带广告、捆绑软件的盗版安装包。下载完成后,我们得到一个标准的安装程序,大小只有几十兆,非常轻便。
- 安装流程:全程默认下一步即可。
- 双击安装包,首先选择安装语言,默认简体中文,点击确定。
- 然后同意用户协议。
- 选择安装路径,这里建议大家不要安装在C盘,可以选择D盘、E盘新建一个文件夹,比如命名为
C语言学习,方便后续查找和管理。 - 剩余的所有选项全部默认下一步,等待一分钟左右即可安装完成。
- 初始设置:安装完成后,打开软件,第一次启动会弹出基础设置界面,默认简体中文、默认字体,直接确认即可,不需要额外修改任何参数。到这里,我们的C语言开发环境就搭建完成了,是不是特别简单?
测试环境
接下来教大家测试环境是否正常,同时教大家新建第一个代码文件。
- 首先点击软件左上角 【文件】-【新建】-【源代码】,此时会弹出一个空白编辑页面,这就是我们写代码的地方。大家记住,我们所有的C语言代码,都要写在这个空白页面里。
- 这里先给大家一段测试代码,大家直接复制粘贴,用来验证环境是否正常:
#include <stdio.h>
int main()
{
printf("环境搭建成功!");
return 0;
}
- 粘贴完成后,我们需要保存文件,点击左上角保存按钮,文件名必须后缀为**.c**,比如
test.c,保存类型选择所有文件,点击保存。新手一定要注意,必须加.c后缀,否则电脑无法识别为C语言代码,无法编译运行。 - 保存完成后,点击顶部菜单栏的 【运行】 按钮,或者直接按快捷键 F11,软件就会自动完成编译、链接、运行全过程。此时弹出黑色控制台窗口,显示“环境搭建成功!”,就说明你的开发环境完全正常,没有任何问题。
注意事项
最后给大家讲几个新手常用的基础操作和注意事项:
- 每次写新代码,都要新建源代码文件、重新保存,不要在同一个文件里反复修改。
- 文件名不要用中文、空格、特殊符号,尽量用英文和数字,避免编译报错。
- 运行代码前必须保存文件,未保存的代码无法编译执行。
- 如果弹出报错,大概率是文件未保存、后缀错误、代码格式错乱三个问题。
整体来说,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程序!接下来我们逐行拆解代码,搞懂每一行代码的作用,不做只会抄代码的小白。
代码逐行解析
#include <stdio.h>:这行代码叫做头文件包含。大家可以简单理解为:调用工具包。stdio.h是C语言的标准输入输出头文件,我们用到的printf打印函数,就存放在这个头文件里面。如果不写这行代码,编译器就不认识printf是什么,程序直接报错。所有需要输入、输出文字的程序,都必须包含这行头文件,这是固定格式,必须熟记。int main():这是程序的主函数,也是整个程序的入口。大家记住一个铁律:所有C语言程序,都是从main函数开始执行的,没有main函数的程序,无法运行。int代表这个函数最终会返回一个整数,main是函数名,固定写法,不能修改、不能写错,括号()也是固定格式。{ }:紧接着的大括号,是函数的代码体,所有属于main函数的执行代码,都必须写在这一对大括号中间。左右大括号必须成对出现,缺一不可,新手最容易犯的错误就是漏写括号、括号不匹配,大家一定要注意。printf("...");:这是我们的核心执行语句。printf是打印函数,作用是把双引号里面的内容,输出打印到控制台窗口。大家可以自定义双引号里的文字,比如改成“我学会C语言了”,运行后就会打印对应的内容。重点注意:每一句C语言执行语句,结尾必须加分号;,分号代表语句结束,漏写分号是新手第一大报错原因。// ...:我在代码里加了一行注释,//开头的内容,是注释语句,编译器不会执行,只是用来给程序员看的备注,方便理解代码,这个我们下一期详细讲解。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目标文件,和系统自带的标准库文件进行合并,将printf、return这些系统函数的底层实现代码,整合到我们的程序中,补齐所有缺失逻辑。
同时链接阶段会处理所有的地址引用、修复代码中的地址偏移,最终整合出一个完整、独立、无缺失的程序文件,也就是Windows系统下的**.exe**可执行文件。这个exe文件包含了程序运行需要的所有代码、所有依赖,不需要任何额外资源,双击就能直接运行。
常见报错区分
这里给大家区分两个新手最容易混淆的报错:
- 编译报错:大概率是语法写错了,少分号、拼错关键字,代码格式错误。
- 链接报错:大概率是依赖缺失、函数未定义、文件损坏,代码语法没问题,但是缺资源无法运行。
听懂这期,大家以后报错就能精准定位问题。我们平时在Dev-C++点击运行、按F11快捷键,软件是自动帮我们完成了预处理、编译、汇编、链接全部步骤,一键生成exe文件并运行,所以我们感知不到过程,但底层这四步一步都不会少。
完整流程复盘:
手写.c源文件 → 预处理(整理补齐代码) → 编译(转汇编、查语法) → 汇编(转二进制、生成obj文件) → 链接(整合库文件、生成exe文件) → 加载运行。
到这里,程序生成和运行的底层逻辑就彻底讲透了。下一期我们专门讲解代码注释的作用和规范,教大家写出规范、易读的高质量代码!
007-C语言:注释的作用与规范(单行/多行)
大家好,欢迎来到第七期C语言零基础教程!今天我们学习一个看似简单、实则超级重要的知识点——代码注释。注释是编程的基础规范,新手一定要从一开始养成写注释的习惯,不仅能帮自己读懂代码,还能让别人快速看懂你的程序,工作、学习中都必不可少。
什么是注释?
首先明确注释的核心定义:注释是写给程序员看的备注文字,编译器完全忽略注释内容,不会编译、不会执行、不影响程序运行。简单说,注释就是纯文字笔记,用来解释代码功能、标注代码逻辑,只起到说明作用,对程序运行结果没有任何影响。
C语言一共支持两种注释格式:单行注释和多行注释,两种格式各有适用场景,我们逐个讲解,搭配示例代码,方便大家理解使用。
1. 单行注释 //
两个英文斜杠开头,作用是注释当前这一行,//后面的所有内容都会被判定为注释,失效不执行。单行注释是我们日常使用最多的注释格式,适合简短备注、单行代码说明。
实操示例:
#include <stdio.h>
int main()
{
// 本行是单行注释:打印欢迎语句
printf("学习单行注释!"); // 行尾注释:解释当前打印功能
return 0; // 程序正常结束
}
大家运行代码可以发现,所有//后面的文字都不会显示,程序只执行打印功能。单行注释有两个使用规范:
- 只能注释当前行,不能跨行。
- 适合简短说明,不要写大段文字。我们可以单独一行写注释,也可以写在代码行的末尾,都是标准规范。
2. 多行注释 /* ... */
以/*开头,以*/结尾,中间所有的内容,不管多少行、多少文字,全部都会被判定为注释,不会执行。多行注释适合大段说明、程序头部备注、批量注释多行代码的场景。
实操示例:
#include <stdio.h>
int main()
{
/*
这是多行注释
功能:演示多行注释的使用方法
作者:零基础学习者
时间:2026年
所有中间内容均不执行
*/
printf("学习多行注释!");
return 0;
}
大家可以看到,中间大段的文字全部被注释失效,只有打印语句生效。这里重点提醒大家一个新手易错点:多行注释不能嵌套使用,不能在/* */里面再嵌套一对/* */,会直接报错,单行注释没有这个限制。
注释的核心作用
- 方便自己复盘:我们写的代码,过几天大概率会忘记逻辑,注释可以快速回忆代码功能。
- 方便他人阅读:团队开发中,带注释的代码才是规范代码,别人能快速看懂你的逻辑。
- 方便调试代码:我们可以通过注释暂时屏蔽某段代码,排查报错问题,不用删除代码。
书写规范总结
- 注释语言简洁明了,不写废话,精准说明代码功能。
- 关键逻辑、核心代码必须加注释,简单重复代码不用过度注释。
- 注释独占一行或行尾对齐,保持代码整洁。
- 禁止中文符号、禁止乱加注释。
很多新手觉得注释没用、懒得写,这是非常错误的习惯。规范的注释是程序员的基本素养,从今天开始,大家写代码一定要养成加注释的习惯。下一期我们学习编程核心基础:关键字与标识符命名规则!
008-C语言:关键字与标识符命名规则
大家好,欢迎来到第八期C语言零基础教程!今天我们学习C语言的语法根基:关键字和标识符命名规则。这是所有变量、函数、代码命名的基础,90%的新手命名报错、语法报错,都是因为不懂这两个知识点,今天一次性给大家讲清楚。
1. 关键字 (Keywords)
关键字是C语言系统提前定义好、自带特殊含义的专用单词,是编程语言的固定词汇,有专属的语法功能,我们不能拿来给自己的变量、函数、文件命名。
C语言标准一共规定了32个关键字,全部都是小写英文,比如我们之前见过的int、return,后续会学到的char、float、if、else、for、while等,全部都是关键字。每个关键字都有专属固定作用,比如int代表整型、return代表返回值、if代表判断。
核心规则: 关键字是系统专用词,有固定用途,禁止自定义使用。不能用int当变量名、不能用return当文件名,一旦占用关键字命名,程序直接编译报错。大家不用一次性背完32个关键字,后续学到哪个就记住哪个,循序渐进即可。
2. 标识符 (Identifiers)
简单来说,标识符就是我们程序员自己给变量、函数、文件、数组起的名字,所有我们自定义的名称,统一叫做标识符。比如我们定义一个变量a、变量num,新建的函数test,这些都是标识符。
标识符不能随便乱起,必须严格遵守C语言命名规则,这是硬性语法规范,违规直接报错,我给大家总结四条核心规则,全覆盖、无遗漏。
- 组成字符限制:标识符只能由字母、数字、下划线三种字符组成,不能包含汉字、空格、特殊符号、标点符号。
- ✅ 合法:
num,max,_age,sum123 - ❌ 非法:
num#,max 1,年龄,a@b
- ✅ 合法:
- 首字符限制:标识符不能以数字开头。可以用字母、下划线开头,不能用数字开头。
- ✅ 合法:
a1,_num - ❌ 非法:
123a,3max
- ✅ 合法:
- 大小写敏感:标识符严格区分大小写。C语言是大小写敏感语言,大写A和小写a是两个完全不同的标识符。比如
Num和num是两个不同的变量,大家写代码时一定要统一大小写,避免命名混乱。 - 禁用关键字:标识符绝对不能使用C语言关键字。不能用系统专用词自定义命名,这是最基础的规则,避免和系统语法冲突。
行业规范建议
除了硬性语法规则,还有三个新手必守的行业规范,让你的代码更专业:
- 见名知意:尽量用英文单词、拼音缩写,比如年龄用
age、分数用score、总和用sum,不要用a、b、c、x这种无意义命名,后期完全看不懂代码。 - 小写+下划线:尽量小写命名,多个单词用下划线分隔,比如
student_age、max_score,规范整洁。 - 禁止中文命名:虽然部分编译器支持,但不通用、不规范、极易报错。
示例代码:
#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. 变量的定义
标准语法:数据类型 变量名;
- 数据类型:就是我们上一期学的
int、float、char,决定盒子的大小和存储类型。 - 变量名:就是我们给盒子起的名字,必须遵守标识符命名规则。
我们先看基础变量定义示例:
#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;
}
运行代码可以看到,变量的值可以随时被新数值覆盖修改,这就是变量的核心作用,存储动态变化的数据。
总结
到这里,变量的基础知识点就全部讲完了,这是后续所有运算、循环、逻辑代码的基础,大家一定要熟练掌握定义、初始化、赋值、修改的全套操作。
- 变量是存储数据的内存空间,值可修改。
- 使用规则为先定义后使用。
- 推荐定义时初始化,避免随机垃圾值。
- 变量命名遵守标识符规则,数据类型匹配存储内容。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)