C语言(1)
计算机基础计算机的组成计算机的定义计算机能进行计算及逻辑处理的设备。硬件组成计算机的物理部件硬盘内存条CPU等​ 开发中对于硬件的认知硬件包括电子设备、单片机、集成电路和嵌入式系统。软件计算机中运行的程序和数据​ 开发中对于软件的认知软件分为系统软件OS、应用软件、编程工具编译器计算机的六大部件中央处理器CPU:负责控制指令执行和数据计算。内存临时存储程序运行时的指令和数据。输入设备向计算机输入数据鼠标键盘扫码枪等。输出设备将计算机处理结果输出显示器打印机等。外存设备永久存储数据硬盘U盘等。网络实现设备间数据的传输和通讯。计算机工作原理存储程序程序和数据预先存储在内存里。程序控制CPU按照指令顺序逐条执行操作。计算机工作语言语言类型特点示例机器语言二进制代码可直接控制硬件执行效率最高1011110 010100010汇编语言用助记符表示机器指令需通过汇编器翻译为机器语言MOV AL, 61h0、高级语言贴近人类自然语言可读性强需要编译/解释执行printf(“hello world”)C语言程序的开发过程开发的三个步骤①编辑程序员编写源程序 .c文件。②编译编译器将源代码转换为可执行的二进制指令文件。③运行操作系统加载并执行可执行二进制程序。C语言程序的编译过程上面提到编译分为四个步骤预处理预处理软件分为系统软件OS、应用软件、编程工具编译器处理宏定义#define,头文件包含#include、注释等将头文件内容直接拷贝到当前文件。预处理需要用到预处理器。命令gcc -E *.c -o *.i文件类型转换*.c → *.i说明生成预处理后的C代码文本文件yueqianyueqian-vm:~$ gcc-Edeom1.c-odeom1.i yueqianyueqian-vm:~$catdeom1.i编译编译对预处理后的代码进行语法分析语义检查生成汇编语言代码。编译要用到编译器。命令gcc -S *.c -o *.s文件类型转换.i/.c → *.s说明生成汇编代码文本文件yueqianyueqian-vm:~$ gcc-Sdeom1.i-odeom1.s yueqianyueqian-vm:~$catdeom1.s汇编.汇编将汇编代码转换为二进制代码生成目标文件。汇编要用到汇编器。命令gcc -c *.s -o *.o文件类型转换*.s → *.o说明将汇编代码转为二进制目标文件注gcc -c *.c 等价于预处理编译汇编三步yueqianyueqian-vm:~$ gcc-cdeom1.s-odeom1.o yueqianyueqian-vm:~$catdeom1.o链接链接将目标文件与系统库文件、其他目标文件合并生成可执行文件。链接要用到链接器。命令gcc *.c -o *文件类型转换*.o →可执行文件说明生成可执行二进制文件C语言程序的基本结构一个简单的C语言程序功能在控制台(终端)输出“Hello World!”/************************************************************************* File Name: deom1.c Author: 蒋文辉 Description: Created Time: 2026年07月28日 星期二 19时34分38秒 ************************************************************************/#includestdio.h//引入输入输出标准库头文件printf()需要这个头文件//主函数一个*.c有且仅有1个主函数作为程序的入口这个函数在程序运行后自动执行intmain(intargc,char*argv[]){//C标准库提供的函数向控制台输出Hello World\n是换行的意思需要引用stdio.hprintf(Hello World\n);return0;}#运行结果yueqianyueqian-vm:~$ ./a.out Hello World程序结构分析①注释用于解释代码逻辑仅给程序员阅读。注释在编译的早期翻译阶段(预处理)被替换为空格不参与后续编译。②预处理指令以 # 开头用于包含头文件、宏定义等如 #include stdio.h #define PI 3.1415926。③主函数 main 函数程序的唯一入口由操作系统通过程序启动机制自动调用不能被程序员自定义函数调用。④函数组成​ – 函数头说明函数的返回值类型、函数名和参数列表。在C语言中 int main(void) 明确表示无参数int main() 表示参数未指定与C不同C中二者语义有区别。若无参数建议统一使用 intmain(void) 或 int main(int argc, char *argv[])​ – 函数体用 {} 括起来包含变量声明和语句执行的部分语句以 ; 结尾⑤函数调用语句调用已定义的函数如 printf 是标准库中的输出函数C语⾔编程规范C语言编程需要遵循以下规范提升代码的可读性和可维护性缩进格式推荐缩进4个空格或配置编辑器将Tab键显示宽度设为4个字符统一代码层级。⾜够注释对于关键代码如函数功能、复杂逻辑、变量含义添加注释。合适空⾏预处理指令与函数之间、函数与函数之间、全局变量与函数之间添加空行区分代码模块/************************************************************************* File Name: deom1.c Author: 蒋文辉 Description: Created Time: 2026年07月28日 星期二 20时10分45秒 ************************************************************************/// 包含头文件预处理时会将对应的.h文件代码全部拷贝到当前文件位置#includestdio.h#includestdlib.h// 宏定义预处理阶段会使用宏值替换掉宏名称称作宏展开#defineR2// 定义一个半径#definePI3.1415926intmain(intargc,char*argv[]){//向控制台输出Hello Worldprintf(Hello World\n);// 计算圆的面积doubleareaPI*R*R;// 预处理后double area 3.1415926 * 2 * 2printf(%lf\n,area);return0;}#运行结果yueqianyueqian-vm:~$ ./a.out Hello World12.566370{}对⻬推荐C/C风格intfun(){...}分层缩进与模块化函数体内的代码按逻辑层次缩进复杂逻辑拆分模块化intfunc(){if(..){for(..){printf(hello\n);}}if(..){for(..){printf(hello\n);}}}单句单⾏不将多条语句写在同一行intmain(){// 不推荐的写法printf(第1行\n);printf(第2行\n);printf(第3行\n);// 推荐的写法printf(第1行\n);printf(第2行\n);printf(第3行\n);}标识符命名函数名、变量名等都叫标识符命名要见名知意使用英文单词或短语避免无意义的字母intmain(){// 不推荐的写法inta21;intb168;intc190;// 推荐的写法intage21;// 年龄21intheight168;// 身高168intweight190;// 体重190return0;}C语⾔中的注释C语言注释分为单行注释和多行注释作用是解释代码、屏蔽临时无用代码、不参与编译在预处理阶段删除。单⾏注释格式用 // 开头注释从 // 到行尾适用场景变量说明、常量说明、函数调用语句、简单逻辑注释// 注释内容// 预处理指令引入系统标准输入输出库printf函数需要用到#includestdio.hintmain(){// 向控制台输出 hello world! \n是换行符必须写在 \n 内部printf(hello world!\n);return0;}多⾏注释格式用 /* 开头以 */ 结尾可单行可跨多行不能嵌套适用场景文件头说明、函数功能说明、复杂代码块注释/* 注释内容 *//* 注释内容 注释内容 *//* 函数名main 功能程序入口输出hello world! 返回值0-表示程序正常结束 */intmain(){...}⽂档注释文档注释本质上还是多行注释用于生成标准化文档格式更加规范一般替代传统的多行注释。/** * brief 函数名main * author 开发者姓名 * date 开发时间 * param argc 解释参数 * param argv 解释参数 * return 返回值说明 */intmain(intargc,char*argv[]){...return0;}数据类型数据类型决定了数据在内存中如何存储需要多大空间数据计算机需要处理的信息数字、文字、符号、图片、音视频等程序运行时所有数据都需要加载到内存中。数据类型分类基本类型内置类型​ – 整型数值类型存储整数​短整型 short short int 的表示2个字节​基本型 int 使用频率最高4个字节​长整型 long long int 的表示32位系统4字节64位系统8字节​ 长长整型 long long long long int C99新增标准​ – 浮点型数值类型存储小数/实数​单精度型 float 4个字节​双精度型 double 8个字节​ 长双精度型 long double​ – 字符型 char 存储单个字符本质是ASCII码值1个字节构造类型用户基于C语言语法定义指针类型存储内存地址空类型void 表示无类型用于函数返回值函数形参指针类型举例 main(void) 等价于 main()数据类型在内存中的大小数据类型中文说明大小字节常见取值范围short短整型2-32768~32767int基本整型4-2147483648 ~ 2147483647long长整型432位系统/864位系统32位同intLinux 64位-9223372036854775808 ~9223372036854775807Windows 64位同32位-2147483648 ~ 2147483647long long长长整型8-9223372036854775808 ~ 9223372036854775807float单精度浮点型4约 ±3.4×10³⁸精度 6~7 位有效数字double双精度浮点型8约 ±1.7×10³⁰⁸精度 15~16 位有效数字char字符型1-128 ~ 127有符号/ 0 ~ 255无符号bool(_Bool,C99新增)布尔型1true非 0、false0注意 计算机存储最小单位是 bit 位1个 bit 仅能存储0或1程序中最小操作单位是 Byte 字节1字节 8位C语言中没有 Byte 这个单位我们使用 char 表示字节。也就是 1 char 8 bit 。sizeof运算符使用示例sizeof运算符用来计算数据类型或者变量的大小返回的是字节数/************************************************************************* File Name: demo01.c Author: 蒋文辉 Description: Created Time: 2026年07月29日 星期二 17时25分31秒 ************************************************************************/#includestdio.hintmain(intargc,char*argv[]){printf(int的大小%ld字节\n,sizeof(int));printf(double的大小%ld字节\n,sizeof(double));return0;}#运行结果int的大小4字节 double的大小8字节总结① 数据类型的字节大小与C语言编译系统32位/64位、操作系统相关②sizeof是运算符非函数计算结果为无符号整数只有正整数没有负整数常量常量是程序执行过程中值不可改变的量与变量一样需要用到内存空间存储。整型常量整型常量有十进制、八进制、十六进制三种表示形式表示形式十进制常量​ – 组成数字0~9不能以0开头0自身除外​ – 注意不能表示小数​ – 示例正确写法992980​ 错误写法06000八进制常量​ – 组成数字0~7以0为前缀不可省略​ – 注意不能表示小数​ – 示例正确写法03062000​ 错误写法039,255十六进制常量​ – 组成 0~9 a~f / A~F 以 0x/0X 为前缀​ – 注意不能表示小数​ – 示例0xFFAEFBF、0X123、0x0/0x00000000后缀说明长整型常量在数值后加L/l推荐用L示例long num 123L明确指定为长整型此时的 L 只起到一个标识作用数值依然是123有符号和无符号有符号默认表示范围为负数 0 正数如char的有效范围是-128~127可以在类型前添加修饰关键字signed一般省略。// 以下两行代码完全等价signedinta10086;inta10086;无符号表示范围 0 正数 内存中负数位用来存储正数正数范围更大如 char 的无符号范围是0~255需要再类型前添加修饰关键字unsigned。unsignedcharnum100;// 只能存储 0 ~ 255char(有符号)范围-128~127char(无符号)范围0~255浮点型常量浮点型常量小数/实数有两种表示方式十进制小数形式组成数字0~9小数点 . 必须包含小数点即使整数部分为0或小数部分为0示例0.123(double默认) /0.123F(float)、-12.6、3.0、0.0注意​ – float 类型常量需要在末尾添加F/f默认浮点型常量为 double 类型。​ – 示例float f 0.12F明确指定为单精度浮点型指数形式科学计数法格式数字 e/E整数指数e/E表示10的幂次。示例​ – 正数 12345.67→1.234567*10^4→1.23467e4或1.234567e4十进制小数形式 → 指数形式– 负数 0.0147→1.47*10^2→1.47e-2十进制小数形式 → 指数形式注意​ – e/E 前面必须有数字 0~9 其中小数点前的整数部分取值范围为 1~9 前导零 0 在数值上无意义但C语法允许​ – e/E 后面必须是整数不能带小数错误示例 1.2345e3.5​ – 单精度常量需要加 f/F 如 1.2345e3F (float)、 1.2345e3 (double默认)字符型常量普通字符常量格式用单引号 ‘’ 括起来的单个字符。英文输入法下的字母、数字、符号等ASCII规范的字符。示例​ – 正确示例如 ‘a’ , ‘A’ , ‘5’ , ‘_’ , ‘’ , ‘\n’​ – 错误示例如 ‘软’ , “a”本质硬件存储的是ASCII规范的字符的ASCII码值如 a 的ASCII码值为 97 A 的ASCII码值为 65 ,数字为48转义字符常量以反斜杠 \ 开头的特殊的字符序列用于表示控制字符或不可见字符如换行符、制表符常见转义符如下字符形式ASCII码中文解释用途\n10换行光标移动至下一行开头\r13回车光标移动至当前行开头\00空字符字符串结束标志重要\t9水平制表符相当于按Tab键8个空格\\92反斜杠表示字符\\39单引号表示字符\34双引号表示字符在 Linux 终端输入 man ascii 可查看所有 ASCII 字符及对应码值。字符串常量定义用双引号括起来的字符序列可包含多个字符、数字、符号,C语言无内置的字符串类型字符串常量和变量均需要通过字符数组或者字符指针来实现。字符串常量末尾自动添加\0结束标记但是这个标志是看不见的也不会显示输出。示例How are you ? // 实际存储How are you ? \0hello world// 实际存储hello world\0123456// 实际存储123456\0// 实际存储\0输出通过printf函数的%s格式输出printf(hello world!\n);// 推荐内部补充%s// 等价于printf(%s,hello world!\n);与字符常量的区别对比项字符常量如‘a’字符串常量如“a”定界符单引号双引号内存占用1字节存储ASCII码2字节a \0结束标志无自动添加\0字符串结束标志表示范围仅单个字符可多个字符或空关键字符串常量末尾会被系统自动添加\0用于标识字符串结束这是字符串与字符常量的核心区别。符号常量无参宏定义定义通过预处理指令#define定义的标识符用于代表一个固定常量预处理阶段会直接替换成宏值优点增强代码的可读性用有意义的标识符代替魔法数字提升代码的可维护性需修改常量时仅需要修改宏定义无需逐个修改代码语法格式#define宏名称 宏值注意事项① 宏名称与宏值之间用空格隔开② 行末不能加;否则替换是会带入分号导致语法错误③ 宏名称命名规范字母A~Za~z 数字0~9 下划线_不能以数字开头。习惯上宏名使用全大写如MAX_VALUE小写字母也合法但较少用于宏如max_value示例代码源程序/************************************************************************* File Name: demo03.c Author: 蒋文辉 Description: Created Time: 2026年07月29日 星期二 19时01分30秒 ************************************************************************/#includestdio.h// 定义PI// 语法#define 全大写宏名 宏值#definePI3.1415926intmain(intargc,char*argv[]){// 实现一个圆的面积计算// 创建一个变量用来存放圆的半径doubler10;// 计算圆的面积doubleareaPI*r*r;printf(圆的面积是%f\n,area);// 计算圆的周长doublec2*PI*r;printf(圆的周长是%f\n,c);return0;}预处理后...#14demo03.cintmain(intargc,char*argv[]){doubler10;doublearea3.1415926*r*r;printf(圆的面积是%f\n,area);doublec2*3.1415926*r;printf(圆的周长是%f\n,c);return0;}运行结果yueqianst-vm:/mnt/hgfs/Code/20260729$ gcc demo03.c yueqianst-vm:/mnt/hgfs/Code/20260729$ ./a.out 圆的面积是314.159260 圆的周长是62.831852

相关新闻

解析Agent Loop(智能体循环)的三层分级体系

解析Agent Loop(智能体循环)的三层分级体系

如今 AI 圈热度居高不下的Loop Engineering(循环工程),其实我们在日常工作中大概率已经接触过。 每一次与编程助手(如Claude Code、Codex或Cursor)的交互会话,本质上都是一个循环:模型读取用户…

2026/7/31 4:06:51 阅读更多 →
LangGraph 从入门到精通:Functional API 完全指南

LangGraph 从入门到精通:Functional API 完全指南

前言:为什么你需要这本教程 在 AI 大模型时代,调用一个 LLM(大语言模型,Large Language Model)已经非常容易。但真正的挑战在于:如何构建一个能自主决策、多步推理、调用外部工具、与人类协作的智能 Agent…

2026/7/31 4:06:51 阅读更多 →
嵌入式步进电机控制:20秒实现按钮与遥控双模式驱动方案

嵌入式步进电机控制:20秒实现按钮与遥控双模式驱动方案

在嵌入式开发中,经常需要快速验证电机控制逻辑,但传统方法往往涉及复杂的硬件接线和冗长的代码编写。本文将分享一套极简的步进电机控制方案,通过按钮和遥控两种方式实现快速控制,代码精简且易于移植,适合STM32、Ardui…

2026/7/31 4:06:51 阅读更多 →

最新新闻

GLM 5.2 Token暴增15倍:技术优化与成本控制实战解析

GLM 5.2 Token暴增15倍:技术优化与成本控制实战解析

最近在测试一些大模型时,发现一个很有意思的现象:GLM 5.2的Token数量相比之前版本暴增了15倍。这个数字乍一看很吓人——毕竟在AI领域,Token数量直接关系到使用成本。但真正让我在意的不是数字本身,而是背后那个更根本的问题&…

2026/7/31 4:42:25 阅读更多 →
语言模型与知识图谱融合的智能摘要技术解析

语言模型与知识图谱融合的智能摘要技术解析

1. 项目概述:当语言模型遇上知识图谱去年参与一个金融舆情分析项目时,我们团队面对每天数十万篇的财经报道,传统摘要方法产生的碎片化结果让分析师们叫苦不迭。正是这次经历让我意识到,将语言模型的文本理解能力与知识图谱的结构化…

2026/7/31 4:42:25 阅读更多 →
回溯算法精讲:从核心思想到N皇后、全排列实战应用

回溯算法精讲:从核心思想到N皇后、全排列实战应用

1. 实验目标与回溯法核心思想这次我们来聊聊算法课上一个绕不开的经典实验:回溯法。很多同学第一次接触这个概念,可能会觉得它有点“玄学”——代码写出来好像很简单,但为什么这么写,以及它到底是怎么一步步“试错”并找到答案的&…

2026/7/31 4:42:25 阅读更多 →
COMSOL土壤源热泵建模技术与工程实践

COMSOL土壤源热泵建模技术与工程实践

1. COMSOL土壤源热泵模型概述土壤源热泵(Ground Source Heat Pump, GSHP)作为可再生能源利用的重要形式,其仿真建模一直是暖通空调和能源工程领域的研究热点。COMSOL Multiphysics凭借其强大的多物理场耦合能力,成为构建土壤源热泵…

2026/7/31 4:42:25 阅读更多 →
2026年五大AI降重工具横评与学术写作技巧

2026年五大AI降重工具横评与学术写作技巧

1. 2026届学术写作必备:五大降重工具深度横评在学术写作领域,重复率问题一直是困扰研究人员的痛点。随着AI技术的快速发展,2026年新一代降重工具已经实现了质的飞跃。作为一名长期与论文打交道的科研人员,我实测了市面上主流的五款…

2026/7/31 4:42:25 阅读更多 →
基于Rust构建高性能OSINT终端工具:架构设计与工程实践

基于Rust构建高性能OSINT终端工具:架构设计与工程实践

1. 项目概述:为什么是Rust与终端?如果你和我一样,长期在信息安全、威胁情报或者开源情报(OSINT)领域摸爬滚打,肯定对效率工具有着近乎偏执的追求。我们常常需要快速查询、关联、分析海量的公开数据&#xf…

2026/7/31 4:41:25 阅读更多 →

日新闻

物理复制比逻辑复制好在哪?数据库复制原理详解

物理复制比逻辑复制好在哪?数据库复制原理详解

数据库复制是把主库数据同步到备库的机制,分为逻辑复制和物理复制两种。逻辑复制传输的是 SQL 语句或行变更事件,物理复制传输的是存储引擎底层的物理日志。阿里云 PolarDB(云原生数据库)采用物理复制,在同步延迟、数据…

2026/7/31 0:00:34 阅读更多 →
BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bilib…

2026/7/31 0:00:34 阅读更多 →
有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

当前,游戏行业的“DataAI融合”已从概念验证进入价值落地阶段。根据IDC 2025年数据,中国AI游戏云市场规模已达18.6亿元;同时,游戏研发环节AI渗透率高达86%,生成式AI内容普及率超过50%。面对庞大的市场,游戏…

2026/7/31 0:00:34 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/31 1:03:03 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/31 4:19:39 阅读更多 →

月新闻