一、hello_world.c;#include;main;{};注释;printf函数;system函数;return语句;gcc编译4步骤;寄存器、缓存、内存三者关系;关键字说明

hello_world.c =============================================================== #include <stdio.h> #include <Windows.h> //#include 表示引入头文件 //stdio.h 系统标准输入、输出对应的头文件,提供printf函数服务 //<>:系统库函数;"":用户自定义库函数 #include "xxxxx.h“ #define PI 3.14 //定义常量,宏定义方式 //int:函数返回值是整型数据;main:主函数,程序唯一的入口,一个项目有且只有一个; // {}:函数体 //void:函数参数可以为空;void可以省略 int main(void) { printf("Hello, World c!\n"); //#include <stdio.h> printf("pi is :%d",PI); //system("pause"); //system("cls"); //cls cmd界面清屏效果 //system("dir"); //system()执行系统函数 Sleep(2000); //#include <Windows.h> return 0; }

#include;main;{};注释;printf函数;system函数;return语句 =================================================================================== //#include 表示引入头文件 //stdio.h 系统标准输入、输出对应的头文件,提供printf函数服务 //<>:系统库函数;"":用户自定义库函数 #include "xxxxx.h“ //void:函数参数可以为空;void可以省略 ------------------------------------------------------------------------- main函数 主函数,程序唯一的入口,一个项目有且只有一个 一个完整的C语言程序,是由一个、且只能有一个main()函数(又称主函数,必须有)和若干个其他函数结合而成(可选)。 main函数是C语言程序的入口,程序是从main函数开始执行。 ------------------------------------------------------------------------- {} 括号,程序体和代码块 {}叫代码块,一个代码块内部可以有一条或者多条语句 C语言每句可执行代码都是";"分号结尾 所有的#开头的行,都代表预编译指令,预编译指令行结尾是没有分号的 所有的可执行语句必须是在代码块里面 ------------------------------------------------------------------------- 注释 //叫行注释,注释的内容编译器是忽略的,注释主要的作用是在代码中加一些说明和解释,这样有利于代码的阅读 /**/叫块注释 块注释是C语言标准的注释方法 行注释是从C++语言借鉴过来的 ------------------------------------------------------------------------- printf函数 printf是C语言库函数,功能是向标准输出设备输出一个字符串 printf(“hello world\n”);//\n的意思是回车换行 ------------------------------------------------------------------------- return语句 return代表函数执行完毕,返回return代表函数的终止 如果main定义的时候前面是int,那么return后面就需要写一个整数;如果main定义的时候前面是void,那么return后面什么也不需要写 在main函数中return 0代表程序执行成功,return -1代表程序执行失败 int main()和void main()在C语言中是一样的,但C++只接受int main这种定义方式 ------------------------------------------------------------------------- system 函数: 执行系统命令。如: pause、cmd、calc、mspaint、notepad..... system("cmd"); system("calc"); 清屏命令:cls; system("cls");

【重点】gcc编译4步骤: gcc helloworld.c -o hello.exe #该动作可以拆解为以下4步骤: 1. 预处理 -E xxx.i 预处理文件 gcc -E xxx.c -o xxx.i 1) 头文件展开。 --- 不检查语法错误。 可以展开任意文件。 2)宏定义替换。 --- 将宏名替换为宏值。 3)替换注释。 --- 变成空行 4)展开条件编译 --- 根据条件来展开指令。 2. 编译 -S xxx.s 汇编文件 gcc -S hello.i -o hello.s 1)逐行检查语法错误。【重点】 --- 整个编译4步骤中最耗时的过程。 2)将C程序翻译成 汇编指令,得到.s 汇编文件。 3. 汇编 -c xxx.o 目标文件 gcc -c hello.s -o hello.o 1)翻译:将汇编指令翻译成对应的 二进制编码。 4. 链接 无 xxx.exe 可执行文件。 gcc hello.o -o hello.exe 1)数据段合并 2)数据地址回填 3)库引入

寄存器、缓存、内存三者关系 从远近来看:CPU〈---〉寄存器〈---> 缓存 <---> 内存。 CPU计算时,先预先把要用的数据从硬盘读到内存,然后再把即将要用的数据读到寄存器。于是 CPU<--->寄存器<--->内存,这就是它们之间的信息交换。 那为什么有缓存呢?因为如果经常操作内存中的同一址地的数据,就会影响速度。于是就在寄存器与内存之间设置一个缓存。 因为从缓存提取的速度远高于内存。当然缓存的价格肯定远远高于内存,不然的话,机器里就没有内存的存在。 //32位、64位系统其实跟cpu寄存器32位、64位是相关的;32位bit=4Gb

32个关键字说明 =============================================== 数据类型关键字:编译器预算对象(变量)分配的内存空间大小。 char :声明字符型变量或函数返回值类型 short :声明短整型变量或函数 int: 声明整型变量或函数 long :声明长整型变量或函数返回值类型 float:声明浮点型变量或函数返回值类型 double :声明双精度浮点型变量或函数返回值类型 signed:声明有符号类型变量或函数 unsigned:声明无符号类型变量或函数 struct:声明结构体类型 union:声明共用体类型 enum :声明枚举类型 void :声明函数无返回值或无参数,声明无类型指针 控制语句关键字 if:条件语句 else :条件语句否定分支(与 if 连用) switch :用于开关语句 case:开关语句分支 default:开关语句中的“默认”分支 for:一种循环语句 do :循环语句的循环体 while :循环语句的循环条件 break:跳出当前循环 continue:结束当前循环,开始下一轮循环 goto:无条件跳转语句 return :子程序返回语句(可以带参数,也可不带参数) 存储类关键字 auto :声明自动变量 extern:声明变量或函数是在其它文件或本文件的其他位置定义 register:声明寄存器变量 static :声明静态变量 const :声明只读变量 其他关键字 sizeof:计算数据类型或变量长度(即所占字节数) typedef:用以给数据类型取别名 volatile:说明变量在程序执行中可被隐含地改变
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!