C语言
文章平均质量分 73
勤奋的懒羊羊~
少年有梦,不应止于心动
展开
-
移位操作符与位操作符(不创建临时变量实现两个数的交换) 【C语言】
0000 0000 0000 0000 0000 0000 0000 0011 ---3的补码。0000 0000 0000 0000 0000 0000 0000 0011 ---3的补码。0000 0000 0000 0000 0000 0000 0000 0011 ---3的补码。原码:0000 0000 0000 0000 0000 0000 0000 1100。补码:0000 0000 0000 0000 0000 0000 0000 1100。负数的原码,反码,补码是需要通过计算的。原创 2022-11-26 10:21:02 · 170 阅读 · 7 评论 -
扫雷详细讲解【C语言】
一、文件的创建一、文件的创建首先,创建三个文件分别为:test.c(源文件,测试的逻辑)game.c(源文件,游戏的实现,供测试的代码使用)game.h(头文件,游戏的实现,供测试的代码使用)二、菜单打印我们先在test.c文件中把菜单写成一个函数,之后再调用。原创 2022-11-16 22:10:38 · 846 阅读 · 6 评论 -
三子棋详细讲解【C语言】
因为time()函数返回的是time_t型,而srand()需要的是一个(unsigned int)类型的变量,所以我们把time()返回的类型强制转换为unsigned int型。ps(时间戳:当前计算机的时间减去计算机的起始时间(1970年1月1日0时0分0秒)=(xxxxx)秒,即为时间戳,time()函数返回的就是时间戳)接着,我们在game.c的文件中写init_board() , print_board()这两个函数,并在game.h中声明一下。原创 2022-11-11 16:17:23 · 888 阅读 · 7 评论 -
冒泡排序函数以及数组名是什么的讲解【C语言】
文章目录一、冒泡排序函数1.思路讲解2.错误设计二、数组名是什么?正确设计一、冒泡排序函数1.思路讲解冒泡排序思想:两两相邻的数进行比较,有可能需要交换。例:假设有5个数:5 3 4 2 1 ,要对其进行升序排列。思路如下:5-3 4 2 1(5>3,交换位置)3 5-4 2 1(5>4,交换位置)3 4 5-2 1(5>2,交换位置)3 4 2 5-1(5>1,交换位置)3 4 2 1 5(此时,经过第一轮4个数的比较,5已经到达正确的位置,接下来5不动)接着原创 2022-11-08 18:43:01 · 518 阅读 · 6 评论 -
【C语言小知识分享】一组数与多组数输入的不同解决方法【菜鸟教程】
因此如上图第七行代码,当scanf等于2时,说明scanf读到了两个数据,此时可进入循环,输入下一组数时,scanf又等于2,再次进入循环,如此便可以实现多组数的输入。,因此当scanf不等于EOF时,证明读取到了数据,此时便进入了循环,当再次输入一组数时,scanf又不等于EOF,再次进入循环,由此也可实现多组数据的输入。:本人目前在学习C语言,这是我的第一篇博客,以后会坚持在此分享一些与C语言有关的小知识和学习心得,不对之处,欢迎指正。:题目要求的是要有多组输入数据,上面的代码只能实现一组。原创 2022-10-23 17:01:29 · 671 阅读 · 5 评论 -
文件操作【C语言】
磁盘上的文件就是文件。在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件的功能角度分类的)原创 2023-01-19 10:42:32 · 1029 阅读 · 6 评论 -
柔性数组【C语言】
3、包含柔性数组成员的结构用malloc进行内存的动态分配,且分配的内存应该大于结构的大小,以适应柔性数组的预期大小。1、sizeof这种结构大小不包括柔性数组的内存。2、结构中的柔性数组成员前面必须有一个其他成员。这样柔性数组成员a相当于获得了100个整形元素的连续空间。原创 2023-01-17 10:51:59 · 107 阅读 · 7 评论 -
动态内存管理【C语言】
一、为什么存在动态内存管理上述的开辟空间的方式有两个特点:1、空间开辟的大小是固定的。2、数组在声明时,必须指定数组长度,它所需要的内存在编译时分配。但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间大小在程序运行时才能知道,那数组的编译时开辟空间的方式就不能满足了。这时候就只能试试动态内存开辟了。二、动态内存函数的介绍1、malloc和free(1) malloc该函数是C语言提供的一个动态开辟内存的函数。这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。原创 2023-01-16 23:08:56 · 1406 阅读 · 3 评论 -
位段【C语言】
4、当一个结构体包含两个位段,第二个位段成员比较大,无法容纳第一个位段剩余位时,是舍弃剩余位还是利用,这是不确定的。2、位段空间上是按照需要以4个字节(int)或者1个字节(char)的方式来开辟的。3、位段涉及很多不确定因素,位段是不跨平台的,注重可移植的程序应该避免使用位段。1、位段的成员可以是unsigned int,signed int或char。1、位段的成员必须是int、unsigned int或signed int。1、int位段被当成有符号数还是无符号数是不确定的。三、位段的跨平台问题。原创 2023-01-14 23:08:03 · 677 阅读 · 7 评论 -
如何计算结构体的大小?结构体内存对齐【C语言】
(2)接着,对于第二个成员变量 i 它的类型是int,为四个字节,又因为在VS中默认对齐数是8字节,4原创 2023-01-11 09:12:47 · 576 阅读 · 7 评论 -
qsort函数介绍及用冒泡排序思想仿写qsort
compare函数的参数是void*类型是因为,qsort函数设计的时候并不知道未来别人会用来比较 什么类型的数据,设计成void*类型,就可以接收任意类型地址,但void*类型的变量在使用时需 制类型转换一下。中的快速排序,能够排序任意数据类型的数组其中包括整形,浮点型,字符串甚至还有自定义的结构体类型。当第1个字符串0的数。当第1个字符串=第2个字符串时,返回0的数。原创 2023-01-09 14:43:55 · 128 阅读 · 8 评论 -
深度剖析数据在内存中的存储【C语言进阶】
类型的意义:1、使用这个类型开辟内存空间的大小2、如何看待内存空间的视角大端(存储)模式:数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中。小端(存储)模式:数据的低位保存在内存的低地址中,而数据的高位,保存在内存的高地址中。原创 2023-01-04 23:29:30 · 135 阅读 · 12 评论