- 博客(37)
- 收藏
- 关注
原创 通用Makefile详解
分析一个Makefile的代码。主要是几个函数的使用代码比较容易,就是用变量代替一些需要重复输入的部分,这里详细解释一下使用的几个函数。
2024-07-02 14:51:48
352
原创 Makefile基础
使用GCC编译的时候,会遇到一些问题。如果我们只编译几个C文件,那么可以通过类似这种命令来完成。但如果工程里有很多文件需要编译,继续在终端里输入GCC指令来编译就不现实了。如果我们可以写一个文件,用于描述编译哪些源码、如何编译就好了。每次需要编译工程的时候就使用这个文件。make,描述如何编译的文件就是Makefile。Makefile和脚本文件类似,可以执行系统命令。使用的时候只需要一个make命令即可编译。
2024-06-25 13:13:26
706
原创 Linux常用命令
记录一下学习过程,命令不多,只有27个。角度就是够用即可,我不会太深究各种参数,这种资料随便一搜就有了,有需要的时候再搜就行。
2024-05-11 14:49:14
545
原创 UTF-8和GBK
一种是可以在写代码的时候加入encoding = XXX来限制,我投机取巧,既然使用powershell创建的文档编码方式有问题,那我直接用ATOM创建就行了呗。作为菜鸡的我不知道这些是什么意思,但看到unicode gbk这些就想到了编码和解码。搜了一下资料,win10里powershell的编码方式是GB2312,而一般编程中的编码方式是UTF-8。在powershell中使用echo创建文件的时候,编码方式一定是GB2312之类的,而在写python脚本的时候,我用的ATOM应该是别的编码方式。
2024-03-21 11:25:44
364
原创 Lesson 23 动态内存管理
首先是建立了一个变长数组arr,然后通过malloc为其分配空间,判断malloc返回值之后对这个数组赋值,使用完成后释放掉ptr,然后把ptr置为NULL。函数功能是为num个大小为size的元素开辟空间,并且把空间的每个字节都初始化为0。使用sizeof来确认柔性数组大小的时候,其中的柔性数组时不包含在内的。包含柔性数组成员的结构需要使用malloc分配内存,而且分配的内存应该大于结构体的大小,以适应柔性数组的大小。C99中,结构体的最后一个元素允许是未知大小的,这就是柔性数组的成员。
2023-09-19 20:30:55
158
1
原创 Lesson 20 内存函数与数据在内存中的存储1
与memcpy类似,但是可以处理源区域与目标区域有重叠的情况。虽然memcpy在某些编译器下也可以处理重叠情况,但不是所有的编译器都可以。理论上可以用memmove代替memcpy。在处理重叠的时候,根据源地址与目标地址的相对位置,决定拷贝顺序。当目标地址是低地址的是很好,拷贝顺序由前向后。如果源地址是低地址,那么顺序就是从后向前。
2023-09-12 13:47:06
139
1
原创 Lesson 16 指针6
今天这节课分为两个部分,第一个是利用冒泡排序的思想,仿照qsort函数来实现bubble_sort版的可以排序任意类型数据的函数。另一个部分是对指针的应用(一些面试题)。
2023-08-16 14:14:53
128
1
原创 Lesson 7.1 扫雷扩展
这里主要实现标记雷和一次开一片的功能。原始版请参考。本来是想在递归学完之后就实现的,实在太忙拖到了今天。这篇文章一定要结合链接里的文章一起看,否则可能会有很多不明白的地方。
2023-08-08 15:19:00
127
原创 Lesson 10 操作符详解
指二进制、十进制、八进制等不同的数字表示方法。例如十进制里的15,用二进制表示是1111,用八进制表示则是017。这里需要注意,一个数字的每一位代表其“权”。每个数字都可以写成如下的形式:+ 2x10+3x104x10。而 1111b = 1x2+ 1x2+1x21x2= 15。其余的基本概念这里不在叙述。
2023-08-05 16:07:53
84
1
原创 兔子繁殖问题
兔子繁殖问题:假定一对大兔子每月能生一对小兔子,且每对新生的小兔子经过一个月可以长成一对大兔子,具备繁殖能力,如果不发生死亡,且每次均生下一雌一雄,问一年后共有多少对兔子?这个问题是今天群里的打卡问题,把我自己的思路摆上来,然后用递归和循环的方式分别实现。
2023-08-04 16:38:33
276
1
原创 Lesson 9 递归
递归是一种解决问题的方法,在C语言形式上就是。递归的思想就是把一个大型复杂的问题层层转化为一个与原问题想死,但规模较小的问题来求解。这个过程一直进行到小问题无法再被拆分为止。
2023-08-04 15:52:53
122
1
原创 Lesson 7 从零开始实现扫雷游戏
文章从思路开始,再到代码的具体实现。个人认为,思路远比代码实现重要。有思路,就可以想方设法用代码实现。碰到的问题也可以通过思考解决。开始的时候不必照顾到所有细节,等实现的时候如果碰到问题,再去调整也是可以的。
2023-07-29 16:09:06
172
原创 Lesson 6 二分查找和函数
库函数在printf和scanf里有详细介绍,这里不再赘述。主要说说自定义函数。自定义函数是用户自己定义的,实现某个功能的函数。例如上面的代码中,Add就是一个自定义函数。这个函数的返回类型是int,函数名是Add,参数是x和y。返回值与返回类型必须匹配;参数类型与实际传进来的参数必须匹配,否则会有隐式类型转换;没有返回值的函数的返回类型是void;
2023-07-28 16:24:21
77
2
原创 随机数生成
今天课上学习了猜数字游戏的实现,用到随机数,但只是生成1~100之间的随机数,感觉比较简单。课后想到,如果想生成更大范围的随机数,应该怎么做呢?例如生成介于min 和 max之间的随机数,应该怎么实现?下来仔细思考了一下,发现还是有点意思的。现在将思路记录下来。
2023-07-27 22:32:37
281
1
原创 Lesson 5 猜数字实现+数组1
C语言生成随机数需要3个函数配合,分别是randsrand、和time。对应的头文件是stdlib.hrand和srand)与time.htime。
2023-07-27 17:24:22
76
1
原创 Lesson 4 分支与循环
逻辑操作符包括逻辑与||,逻辑或&&以及逻辑取反!。这里与数学上的逻辑运算相同,不再额外赘述。需要指出的是现象。C语言逻辑运算符会先对左边表达式求值,再对右边表达式求值。如果左边的表达式满足逻辑运算符的条件,则不会对右边求值。这种现象就是。左边是mon >= 3,右边是mon <=5。如果mon == 6,按照短路的原则,6>=3,因此表达式的值是真,也就会执行if之后的语句。
2023-07-24 17:08:37
149
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人