![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
文章平均质量分 56
小biu!!!
这个作者很懒,什么都没留下…
展开
-
结构、联合、枚举
struct 结构体类型名 结构体变量名;注意:C语言中在定义结构变量时,struct关键字不能省略①枚举常量需要占用内存,而定义宏常量不占用内存②枚举常量的设计目的是为了限制实际数据输入、定义宏是为了完成代码的替换和维护③枚举常量是具有类型,宏定义没有类型。原创 2023-09-07 17:16:52 · 77 阅读 · 0 评论 -
基于C语言的多文件编程2048小游戏
【代码】基于C语言的多文件编程2048小游戏。原创 2023-09-07 16:37:24 · 43 阅读 · 0 评论 -
Makefile与多文件编程
在终端执行 make 命令就会自动执行Makefile脚本中的编译指令,它可以根据文件的修改时间、和依赖关系来判断哪些文件需要编译,哪些不需要编译。③如果这个工程的头文件被改变了,那么引用了这几个头文件的c 文件都会重新编译,并链接目标程序。②如果这个工程的某几个c 文件被修改,那么我们只编译被修改的c 文件,并重新链接目标程序。Makefile是由一系列的编译器指令组成的可执行文件,叫做编译脚本。①如果这个工程没有编译过,那么我们的所有c文件都要编译并被链接。原创 2023-08-19 17:09:24 · 99 阅读 · 0 评论 -
头文件包含内容
假如a.h包含了b.h的内容,而b.h中又包含了a.h的内容,这时就会产生头文件的相互包含,无法编译通过。解决方案:把a.h中需要b.h的内容,和b.h中需要a.h的内容提取出来,额外再写另一个c.h。②如果需要用到某个.c文件中的变量、函数、宏时,只需要把该文件的.h文件导入即可。①为每个.c文件写一份.h文件,.h文件是对它对应的.c文件的说明。③.c文件也要导入自己的.h文件,目的是为了让定义与声明保持一致。:头文件只编写声明语句,不能有定义语句。⑥结构、枚举、联合的类型设计声明。原创 2023-08-19 16:29:58 · 41 阅读 · 0 评论 -
预处理与宏定义
程序员所编写的代码不能被真正的编译器所编译,需要先经过一段程序翻译一下翻译的过程称为预处理,负责翻译的程序称为预处理器,被翻译的语句叫做预处理指令,以#开头的都是预处理指令查看预处理的结果:gcc -E code.c 把预处理的结果显示到终端gcc -E code.c -o code.i 把预处理的结果存储到.i预处理文件预处理指令的分类:#include 头文件导入(拷贝)#include <> 从系统指定路径查找头文件。原创 2023-08-19 16:15:24 · 33 阅读 · 0 评论 -
字符串与缓冲区
情况1:需要输入的是整型\浮点型时,而缓冲区中的数据是字符型或符号时,此时读取会失败,并且该数据会继续残留在输入缓冲区中,会继续影响剩下的输入。情况3:当先输入整型或浮点型,再输入字符型时,输入完整型或浮点型后按下的回车或空格,会残留在输入缓冲区,刚好被后面的字符型接收,影响输入。程序中输入的数据并不会立即从键盘接收到变量中,而是当按下回车后先存储到输入缓冲区中,然后再从缓冲区中读取到变量内存中。字符:人能看得懂的符号或图案,在内存中以整数形式存储,根据ASCII码表中的对应关系显示出相应的符号或图案。原创 2023-08-19 14:50:39 · 113 阅读 · 0 评论 -
堆内存的使用
①当首次向malloc申请内存时,malloc会向操作系统申请堆内存,操作系统会直接分配33页(1页=4096字节)内存给malloc管理,但这样不意味着可以越界访问,因为malloc可能会把内存分配给"其他人"使用,这样就产生了脏数据。②每个内存块之间一定会有一些空隙(4~12字节),一部分空隙是为了内存对齐,其中一定有4个字节用于记录malloc的维护信息,如果维护信息被破坏会影响下一次的free的调用。功能:从堆内存中申请size个字节的内存,申请成功会得到连续的内存。原创 2023-08-19 11:02:17 · 68 阅读 · 0 评论 -
指针的基本内容
指针是一种特殊的数据类型,使用它可以定义指针变量,指针变量中存储的是整型数据,该数据代表了内存的编号(地址),可以通过这个编号访问到对应的内存。原创 2023-08-19 09:48:45 · 53 阅读 · 0 评论 -
基于C语言的五子棋项目
每次都要自己数坐标过于繁琐,因此将落子部分由输入坐标改为由键盘移动光标决定。1、定义15 * 15棋盘二维数组。3、定义变量 用于记录落子位置。原创 2023-08-18 20:50:35 · 43 阅读 · 1 评论 -
进程的内存分布
程序:存储在磁盘上的可执行文件(二进制文件、脚本文件)进程映像:进程的内存分布情况。进程:正在系统中运行的程序。原创 2023-08-18 19:59:22 · 33 阅读 · 1 评论 -
C语言函数
C语言标准委员会以函数形式提供的一些基础功能,都被封装在libc.so库中,并且分在了不同的文件中,需要使用时只要把对应的头文件导入即可(例如stdio.h…注意:目前任何编程语言和系统都没有真正的随机数,C编译器是把从0~极大值范围的数值打乱后,存储到一块固定内存中,然后从里面取所谓的随机数。功能:种随机种子,设置从随机数内存的某个位置开始取随机数,为了实现类似真随机的效果,seed位置一般使用time(NULL)来设置。②数据一般要由调用者提供,只把结果返回给调用者,确保函数的通用性。原创 2023-08-18 19:12:16 · 16 阅读 · 0 评论 -
原码、补码、反码与位运算
⑥A >> n 按位右移n位,右边超出的丢弃,左边补符号位。 1、无符号\有符号且最高位为0,补码直接转成十进制。⑤A << n 按位左移n位,左边超出的丢弃,右边补0。 负数的反码是:它的原码符号位不变,其它位按位求反。 b、符号位不变,其余位按位求反,得到原码。 2、原码符号位不变,其余按位求反,得到反码。 1、转换成二进制,得到原码。 1111 1111 原码。 a、补码-1,得到反码。 2、有符号的且最高位为1。 3、反码+1,得到补码。原创 2023-08-18 18:31:44 · 48 阅读 · 1 评论 -
C语言进制转换
随着CPU的位数的不断增加,已经到目前的64位,所以八进制不再能够满足需求,因此发展出现在的十六进制,由于历史原因八进制还不能退出历史舞台。二进制虽然能够直接被计算机识别,但是不方便人去书写和记录,因此就把二进制数据转换成八进制,方便记录到文档中。让数据从高位n位开始,数据 - 2^(n-1) ,如果够减,那么第n位为1,否则为0,直到减完为止。用2不停地对数据求余,然后继续对商求余,直到商为0结束,在过程中得到的余数(%#x %#o 显示出数据对应的进制前缀。开头的数据是八进制数据,以。原创 2023-08-18 17:13:20 · 51 阅读 · 1 评论 -
基于C语言的推箱子项目
2、定义记录人的位置变量 x y。1、定义整数类型的二维数组。3、定义记录步数的变量。原创 2023-08-18 16:45:53 · 49 阅读 · 1 评论 -
基于C语言的走迷宫项目
3、time(NULL) 获取1970-1-1 到现在过了多少秒。2、把getch.h放入C标准库默认路径中,在Linux终端输入。1、在Windows中把getch.h文件放入共享文件夹中。上:183 下:184 左:186 右:185。上:183 下:184 左:186 右:185。2、通过getch()的返回值获取键盘上的键值。上:72 下:80 左:75 右:77。 ①前方位置变成 ‘@’ ②原来位置变成 ’ ’2、定义记录角色位置变量。1、清理屏幕、显示地图。原创 2023-08-18 16:32:18 · 69 阅读 · 1 评论 -
选择语句与循环语句
1、for循环内只有一行代码时,大括号可以省略,但是这样不利于后期代码扩展,一般的商业代码要求大括号不能省略。 表示在范围[n1,n3]内,会打开case开关,但是这属于GNU编译器的特有语法,不建议使用。for循环一般会使用一个变量来引导循环的进行,这个变量叫做该循环的循环变量 i index。[3]:改变循环变量的值,防止出现死循环,一般对循环变量自加或自减。在for循环内定义变量,只能在for内使用,出了for后无法使用。for循环内定义的变量,会屏蔽循环外定义的同名变量。原创 2023-08-18 15:03:58 · 42 阅读 · 1 评论 -
C语言数组
特点:在代码编译期间数组的长度是不确定的,当执行到数组的定义语句时长度才最终确定下来,并且一旦确定长度也无法改变。7、如果有初始化数据,则可以省略数组数量,因为编译器会自动统计数据的个数,然后确定数组的数量。缺点:初始化发生在编译期间,而可变长数组长度的确定发生在运行期间,因此可变长数组无法初始化。什么是数组:变量的组合,是一种批量定义相同类型变量的方式。定义数组时,使用变量作为数组的长度,这种数组称为变长数组。1、数组与变量一样,默认值随机,所以一般都要先初始化。2、数组不能整体初始化,只能逐个初始化。原创 2023-08-18 15:53:08 · 32 阅读 · 1 评论 -
C语言运算符
当左边部分的值已经可以确定整个逻辑运算符的结果时,那么右边部分不执行。 会得到比较结果是1(成立)或0(不成立),比较的结果还可以继续参与运算。 会先把运算对象转换成逻辑值:非零转为真,0转为假,然后再参与逻辑运算。 / % 除数不能为0,否则会在运行时出现浮点数例外(核心已转储) 判断A的值如果为真(非0)则执行B,否则执行C。 后自变:num++/-- 下一行语句才有效。 也可以借助短路特性,实现简单的单分支效果。 ++/-- 让变量的值自动加1或减1。原创 2023-08-17 20:18:07 · 28 阅读 · 1 评论 -
变量与常量
特殊特例:当运算对象类型只是 char或者short,且类型不同,编译器会做类型提升,提升为int再运算。%n.mf 显示n个字符宽度(小数点也算一位),不足时补空格,右对齐,m表示小数点后显示的位数(四舍五入)只有相同类型的数据才能进行运算,如果类型不相同的数据需要先转换成相同的类型才能运算。什么是变量:在程序运行期间值可以发生变化的叫做变量,相当于存放数据的盒子。:变量的初始值默认是随机的,为了安全起见,一般会在定义时初始化为0。%0nd 显示n个字符宽度,不足时补0,右对齐。原创 2023-08-17 19:59:29 · 17 阅读 · 1 评论 -
C语言数据类型
字符就是图案或符号,字符在内存中依然存储成整数,需要显示成字符时,操作系统会根据ASCII码表中的对应关系把整数显示成对应的符号或图案。:采用科学计数法、在二进制与真实数据之间需要进行换算过程,因此浮点数的运算使用速度比整型要慢得多,所以编程时尽量使用整型。先有的C语言后有的bool类型,C语言中不可能有真正的布尔类型,都是在<stdbool.h>中对布尔类型使用整数进行模拟。:由于定义无符号数据时比较麻烦,标准库中把这些类型重新定义成了新的类型名。:大部分操作系统只对小数点后6位有效。原创 2023-08-17 19:22:50 · 24 阅读 · 1 评论 -
C语言中的文件类型
C语言中的文件类型后缀文件类型.c源文件.h头文件.h.gch头文件的编译结果文件,会被优先使用.i预处理文件.s汇编文件.o目标文件.so共享库文件.a静态库文件原创 2023-08-16 21:01:40 · 99 阅读 · 1 评论 -
输入输出与编译
转义字符:键盘上有一些不好直接表示的符号,通过一些特殊字符搭配来表示,这种字符搭配称为转移字符。:C语言是以分号作为一行代码的结束标志,使用大括号来划分代码。printf/scanf ,一般用于调试代码。把若干个目标文件合并成一个可执行文件。: 把汇编文件翻译成二进制的目标文件。: 把预处理文件翻译成汇编文件。:把源文件翻译成预处理文件。:必须使用英文输入法。原创 2023-08-16 20:56:04 · 36 阅读 · 1 评论 -
C语言简介
C语言诞生于1971~1973年,美国贝尔实验室,肯.汤普逊和丹尼斯.里奇C语言是专门为了编写操作系统而诞生的语言,天生适合对硬件编程以运行速度快而著称,而且C语言非常适合编写数据结构和算法因为C语言出现时间太早,所以有很多缺陷,因为没有想到普通人也可以编程,但是很多前辈总结避免这些缺陷或陷阱的经验。原创 2023-08-16 20:20:03 · 21 阅读 · 0 评论