自用学习笔记 C语言基础篇
C基础 ver.26/08/101.C语言的基础概念C语言支持结构化编程强调程序逻辑的清晰、模块化和易维护。C语言不完全依赖于平台具有良好的可移植性C语言编写的程序可以在不同的平台上编译并运行只需要进行一些小的调整或重新编译而不需要对整个程序做出大的修改。C语言不强制使用面向对象编程OOP而是通过函数和控制结构来组织代码。并且它也不支持面向对象编程。C语言的类型系统是强类型的要求在变量使用之前必须明确声明类型保证程序的类型安全。C语言支持低级内存操作如指针操作允许开发人员直接访问硬件和内存。这使得C语言特别适合于开发操作系统、嵌入式系统等对硬件控制要求较高的程序。它不像高级语言那样需要虚拟机或解释器因此能够更精细地控制资源的使用。C语言是一种编译型语言它生成的机器码具有较高的执行效率适合用于需要高性能的应用如操作系统、嵌入式开发等。与解释型语言相比C语言的程序在运行时更接近机器语言执行速度较快。2.C语言的编译工具使用gcc作为编译工具流程为预处理 编译 汇编 链接预处理器 (cpp)gcc -E编译器 (gcc)gcc -S汇编器 (as)gcc -c链接器 (ld)gccHello.cHello.iHello.sHello.o可执行文件gcc -E hello.c -o hello.i // 预处理gcc -S hello.i -o hello.s // 编译gcc -c hello.s -o hello.o // 汇编gcc hello.o -o hello // 链接2.1 预处理器:cpp 头文件包含、宏替换、条件编译、去掉注释2.2 编译器: gcc C文件编译为汇编文件2.3 汇编器: as 汇编文件转换为二进制文件2.4 链接器: ld 将多个目标文件和库文件链接成最终的可执行文件3.C语言的main()函数程序始终从main()函数开始执行并且一个程序有且只有一个main()函数它是程序的入口也被叫做主函数。在C99标准中只有以下两种定义方式是正确的int main() int main(void) /无参数形式/int main(int argc, charargv[]) /带参数形式/其中argc应该是非负数。argv[]应当是一个空指针。4.进制转换与存储单位4.1 示例10110 0x2º1x2¹1x2²0x2³0x2⁴ 224.2 存储单位位bit:二进制位的一个数位可以是0或者是1是计算机中数据的最小单位。字节ByteB计算机中数据的基本单位每8位组成一个字节。各种信息在计算机中存储处理至少需要一个字节。KB: 早期用的软盘有360KB和720KB的不过软盘已经很少使用。MB: 早期微型机的内存有128MB、256MB、512MB目前内存都是1GB、2GB甚至更大。GB: 早期微型机的硬盘有60GB、80GB目前都是500GB、1TB甚至更大。TB: 目前个人用的微型机存储容量也都能达到这个级别了而作为服务器或者专门的计算机不可缺少这么大的存储容量。1B 8bits1KB 1024B 2 10 2^{10}210B5.变量的定义与分类变量是用来存储数据的被命名的内存位置。变量需要用一个有名字的、具有特定属性的存储单元来存放数据。变量必须先定义后使用或先声明后使用定义时指定名字和类型也可以指定初值。存储类型 数据类型 变量名 初始值5.1 1、存储类型说明符用于控制变量的存储位置、生命周期和作用域。auto局部变量默认关键字只能用于函数内或块内static声明为静态变量生命周期为整个程序但作用域受限extern声明为外部变量全局变量的默认存储类型register建议编译器将变量存储在寄存器中以提高访问速度typedef用于定义类型5.2 2、数据类型说明符用于定义变量或函数的基本数据类型。int整数类型4个字节signed有符号整型unsigned无符号整型short短整型2个字节char字符类型1个字节long长整型4个字节float浮点型4个字节double双精度浮点型8个字节bool布尔类型void空类型声明函数无返回值或无参数或未定义指针类型5.3 变量的命名规则1只能由字母包括大写和小写、数字和下划线 _ 组成2不能以数字开头3长度不超过36个字符4变量名区分大小写5变量名不能使用关键字5.4 变量的作用域作用域定义了变量在代码中的可见范围。C语言的作用域包括局部作用域指的是变量仅在某个特定的函数、代码块中可见和可用。局部作用域的变量被称为局部变量。全局作用域指的是变量在整个程序的范围内可见即程序中的任何函数或任何代码块都可以访问该变量。全局作用域的变量被称为全局变量。特性局部作用域全局作用域定义位置函数或代码块内部函数外部通常位于文件的最顶端作用范围仅限于定义它的函数或代码块内部整个文件甚至可以通过extern跨文件访问生命周期从进入代码块开始到代码块结束从程序启动到程序结束存储位置栈区静态存储区初始值未初始化时为未定义值随机值未初始化时为 0命名冲突的处理不同函数和代码块可定义同名变量互不影响冲突可能导致难以调试和维护5.5 变量的生命周期变量的生命周期是指变量从创建到销毁的整个过程。变量类型存储位置生命周期作用域自动变量auto栈stack随着函数或代码块的进入创建离开销毁定义它的函数或代码块静态局部变量static静态数据区从程序开始到程序结束只初始化一次定义它的函数内部静态全局变量static静态数据区从程序开始到程序结束定义它的文件内部外部变量extern静态数据区从程序开始到程序结束可以在其他文件中通过extern声明访问5.6 使用变量注意事项1、变量必须先声明后使用。2、变量一旦声明就不能再更改其类型。3、同一个作用域内不能命名重名的变量。4、变量遮蔽当在一个嵌套的作用域中定义了与外部作用域中同名的变量时内部变量会遮蔽外部变量。需要注意变量的实际作用域以避免意外的结果。示例 int x 10; void func() { int x 20; //遮蔽了外部x printf(%d\n, x); //输出20 } printf(%d\n, x); //输出104、注意变量的占用空间和取值范围5、注意变量的初始化欢迎使用Markdown编辑器你好 这是你第一次使用Markdown编辑器所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持除了标准的Markdown编辑器功能我们增加了如下几点新功能帮助你用它写博客全新的界面设计将会带来全新的写作体验在创作中心设置你喜爱的代码高亮样式Markdown将代码片显示选择的高亮样式进行展示增加了图片拖拽功能你可以将本地的图片直接拖拽到编辑区域直接展示全新的KaTeX数学公式语法增加了支持甘特图的mermaid语法1功能增加了多屏幕编辑Markdown文章功能增加了焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置等功能功能按钮位于编辑区域与预览区域中间增加了检查列表功能。功能快捷键撤销Ctrl/CommandZ重做Ctrl/CommandY加粗Ctrl/CommandB斜体Ctrl/CommandI标题Ctrl/CommandShiftH无序列表Ctrl/CommandShiftU有序列表Ctrl/CommandShiftO检查列表Ctrl/CommandShiftC插入代码Ctrl/CommandShiftK插入链接Ctrl/CommandShiftL插入图片Ctrl/CommandShiftG查找Ctrl/CommandF替换Ctrl/CommandG合理的创建标题有助于目录的生成直接输入1次#并按下space后将生成1级标题。输入2次#并按下space后将生成2级标题。以此类推我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。如何改变文本的样式强调文本强调文本加粗文本加粗文本标记文本删除文本引用文本H2O is是液体。210运算结果是 1024.插入链接与图片链接: link.图片:带尺寸的图片:居中的图片:居中并且带尺寸的图片:当然我们为了让用户更加便捷我们增加了图片拖拽功能。如何插入一段漂亮的代码片去博客设置页面选择一款你喜欢的代码片高亮样式下面展示同样高亮的代码片.// An highlighted blockvarfoobar;生成一个适合你的列表项目项目项目项目1项目2项目3计划任务完成任务创建一个表格一个简单的表格是这么创建的项目Value电脑$1600手机$12导管$1设定内容居中、居左、居右使用:---------:居中使用:----------居左使用----------:居右第一列第二列第三列第一列文本居中第二列文本居右第三列文本居左SmartyPantsSmartyPants 是一个文本转换工具主要功能是将普通的 ASCII 标点符号自动转换为更美观的印刷体标点符号。例如原始符号转换后说明引号“引号”直引号变弯引号单引号‘单引号’直单引号变弯单引号--–两个连字符变短破折号---—三个连字符变长破折号...…三个点变省略号创建一个自定义列表MarkdownText-to-HTMLconversion toolAuthorsJohnLuke如何创建一个注脚一个具有注脚的文本。2注释也是必不可少的Markdown将文本转换为HTML。KaTeX数学公式您可以使用渲染LaTeX数学表达式 KaTeX:Gamma公式展示Γ ( n ) ( n − 1 ) ! ∀ n ∈ N \Gamma(n) (n-1)!\quad\forall n\in\mathbb NΓ(n)(n−1)!∀n∈N是通过欧拉积分Γ ( z ) ∫ 0 ∞ t z − 1 e − t d t . \Gamma(z) \int_0^\infty t^{z-1}e^{-t}dt\,.Γ(z)∫0∞​tz−1e−tdt.你可以找到更多关于的信息LaTeX数学表达式here.新的甘特图功能丰富你的文章2014-01-072014-01-092014-01-112014-01-132014-01-152014-01-172014-01-192014-01-21已完成进行中计划一计划二现有任务Adding GANTT diagram functionality to mermaid关于甘特图语法参考 这儿,UML图表可以使用UML图表进行渲染例如下面产生的一个序列图王五李四张三王五李四张三李四想了很长时间, 文字太长了不适合放在一行.你好李四, 最近怎么样?你最近怎么样王五我很好谢谢!我很好谢谢!打量着王五...很好... 王五, 你怎么样?关于UML图表语法参考 这儿,流程图链接长方形圆圆角长方形菱形关于Mermaid语法参考 这儿,FLowchart流程图我们依旧会支持flowchart.js的流程图语法Created with Raphaël 2.3.0开始我的操作确认结束yesno关于Flowchart流程图语法参考 这儿.导出与导入导出如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到文章导出生成一个.md文件或者.html文件进行本地保存。导入如果你想加载一篇你写过的.md文件在上方工具栏可以选择导入功能进行对应扩展名的文件导入继续你的创作。mermaid语法说明 ↩︎注脚的解释 ↩︎

相关新闻

如何用抖音下载器快速保存直播回放与批量下载内容:完整入门指南

如何用抖音下载器快速保存直播回放与批量下载内容:完整入门指南

如何用抖音下载器快速保存直播回放与批量下载内容:完整入门指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallb…

2026/10/18 3:02:21 阅读更多 →
ETL 管道

ETL 管道

1. 什么是 ETL 管道ETL(Extract、Transform、Load)即提取、转换和加载,是一种用于数据处理的数据工程框架。在 RAG(Retrieval Augmented Generation,检索增强生成)应用中,ETL 管道负责将企业原始…

2026/10/18 3:02:22 阅读更多 →
光刻显影缺陷:桥连/残留/塌陷的排查

光刻显影缺陷:桥连/残留/塌陷的排查

一、背景故事:ADI缺陷率一夜翻了三倍六月的一个周一早上,光刻区主管脸色铁青地站在晨会白板前:周末两天,KLA扫描的ADI(光刻后检查)缺陷密度从平时的每平方厘米零点一翻到了零点三,而且缺陷类型分…

2026/10/18 3:04:37 阅读更多 →

最新新闻

【编译Chap4】求first集、follow集例题

【编译Chap4】求first集、follow集例题

方法 求 FIRST 集的规则 反复扫描所有产生式,以A→X1X2⋯XnA\to X_1X_2\cdots X_nA→X1​X2​⋯Xn​为例: 依次处理 XiX_iXi​(i从1 to n): 把 FIRST(Xi)−{ε}\mathrm{FIRST}(X_i)-\{\varepsilon\}FIRST(Xi​)−{…

2026/10/19 1:15:16 阅读更多 →
Hadoop电信客服分析链路:从混杂日志到交互式业务看板

Hadoop电信客服分析链路:从混杂日志到交互式业务看板

简介:本资源是一个面向大数据初学者与电信行业数据工程师的Hadoop全栈实战项目,聚焦客服数据采集、存储、分析与可视化闭环。项目基于真实业务场景,整合Zookeeper集群协调、HBase实时存储、Flume日志采集、Kafka流式分发及HDFSMapReduce批处理…

2026/10/19 1:15:16 阅读更多 →
循环架构大揭秘:Dory1.0-4B 的 normalized-GPT 与混合注意力如何炼成 256K 长上下文

循环架构大揭秘:Dory1.0-4B 的 normalized-GPT 与混合注意力如何炼成 256K 长上下文

人工智能大模型推理模型模型量化 【免费下载链接】NVIDIA-Nemotron-Labs-Dory1.0-4B-MXFP8 项目地址: https://ai.gitcode.com/hf_mirrors/nvidia/NVIDIA-Nemotron-Labs-Dory1.0-4B-MXFP8 点击查看 免费下载 NVIDIA-Nemotron-Labs-Dory1.0-4B-MXFP8 是 NVIDIA 推出…

2026/10/19 1:15:16 阅读更多 →
基于溯源图与图神经网络的APT攻击链检测方法

基于溯源图与图神经网络的APT攻击链检测方法

简介:一份基于溯源图的APT攻击检测方法优化Python实现源码,适合信息安全、计算机科学、数据科学等专业学生用于毕业设计、课程设计或期末大作业。项目代码已经过功能验证,可稳定运行,并提供清晰的目录结构与注释,便于二…

2026/10/19 1:15:16 阅读更多 →
如何选对模型?InternVL2_5-8B-MPO-AWQ 家族 1B~78B 选型对比指南(含显存与性能权衡)

如何选对模型?InternVL2_5-8B-MPO-AWQ 家族 1B~78B 选型对比指南(含显存与性能权衡)

【免费下载链接】InternVL2_5-8B-MPO-AWQ 项目地址: https://ai.gitcode.com/OpenGVLab/InternVL2_5-8B-MPO-AWQ 点击查看 免费下载 如果你要在开源多模态大模型(MLLM)里选一个"性价比之王",InternVL2_5-8B-MPO-AWQ 值…

2026/10/19 1:15:16 阅读更多 →
游戏大厂Unity项目构建、自动化及符号表上传流程全景剖析

游戏大厂Unity项目构建、自动化及符号表上传流程全景剖析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 1:14:15 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →