C语言
文章平均质量分 68
choose_heart
这个作者很懒,什么都没留下…
展开
-
#define定义标识符详解
在vscode进行预编译处理,我们发现#define所定义的符号在,预编译之后,就被替换了。注释也删除了,这其实就是答案。求结构体偏移量,奇妙利用了0这个值,0地址开始得结构体编译,避免了减法得使用。去运行下代码块里面的代码,结果就会是30,参考预编译后的就会知道结果。可以设置断点看一下每一个值得变化。下面是第二段代码得预编译结果。本质就是对这所定义的num进行替换。练习:不妨自己试一下以下代码。原创 2023-04-06 00:49:02 · 305 阅读 · 0 评论 -
栈, 队列
这里实现的时候依然可以用单链表,但是在申请整个结构时,存一个头节点,也存下一个尾节点,这样加数组就不用走O(n)的时间复杂度。而只花了一个整形变量的空间。实现数据的先进后出,一般有这种特点的的数据结构就称之为栈,考虑仅仅改动尾部的数据,顺序表去实现栈,是最好的选择。有兴趣可以做做力扣上面有关栈实现队列,队列实现栈,以及循环队列的相关题目,进一步提升堆栈和队列的理解。实现先进先出的数据结构,一般用链表来实现。原创 2023-06-15 11:37:19 · 81 阅读 · 0 评论 -
堆和堆排序
树(Tree)定义:树是一种抽象的数据结构,连接了多个节点。每一个节点都连接有多个子节点,同时连接有父节点,除了根节点。特性:没有环,一般用递归实现。如下图:就是树的例子。(图片来自维基百科)举例:红圈2就是父节点,也是根节点,7和5是父节点也是子节点。祖先:通过子->父节点关系可以找到的节点,就是祖先节点。后代:通过父->子节点关系可以找到的节点,就是后代节点。举例:5是红圈2的后代,2是5的祖先。度:对单个节点的子节点数,称之为度。如7这个节点度3,整颗树的度取所有节点度的原创 2023-06-22 16:25:59 · 61 阅读 · 1 评论 -
链表和顺序表
顺序表和链表算是各有优势,在不同的场景具备自己的优劣。熟悉物理结构和实现逻辑更加重要。在之后的队列和栈都是有帮助的。原创 2023-06-15 11:10:04 · 52 阅读 · 0 评论 -
二叉树的几个经典问题
如果是上图的二叉树。前序遍历是:1->2->4->7->8->5->3->6->9->10->11->12(这里指访问之后打印的话)中序遍历是:7->4->8->2->5->1->3->9->6->11->10->12后序遍历是:7->8->4->5->2->9->11->12->10->6->3->1经过上述叙述,其实所谓前中后指的就是根节点访问顺序的前中后。那么具体实现代码如下。原创 2023-06-24 11:07:36 · 147 阅读 · 0 评论 -
整形提升和算术转换
整形提升和算术转换原创 2022-10-12 21:36:43 · 239 阅读 · 2 评论 -
vscode写C语言
vscode的写C语言。原创 2022-12-02 19:57:43 · 1177 阅读 · 0 评论 -
整形和浮点数的存储
整形和浮点数的储存原创 2023-02-22 22:14:12 · 79 阅读 · 0 评论 -
数组排序(C语言)
以下就是常见基本的排序方式1、冒泡排序2、选择排序3、插入排序4、希尔排序5、归并排序6、快速排序7、堆排序8、计数排序该处的排序原理,讲的其实十分细致。这里着重介绍下,快速排序和归并排序。原创 2023-07-22 17:52:50 · 1326 阅读 · 1 评论 -
C语言文件操作
【代码】C语言文件操作。原创 2023-04-03 00:14:11 · 52 阅读 · 0 评论 -
结构体和联合体的存储问题
本人相信的以下解释:一般来说,内存都是足够大的,一个整型字节(假如就是4),那么将其存在是4的倍数的地址上,在读取的时候,就只需要扫描是4的倍数的字节,就可以很快的读取到4.相当于快了三倍的速度。只要有这个对齐数,使得这个结构体的首地址是这个最大对齐数的整数倍,那么就能保证结构体这个各自尽可能地小。S1结构体,无疑是由于int要在偏移量为4个字节处,所以在char之后浪费三个空间,此时结构体的大小是8,恰好是成员对齐数最大值(这里是4)的整数倍。至此/// ///仅代表个人观点,并无实际的理论,纯经验。原创 2023-03-23 23:29:53 · 123 阅读 · 1 评论 -
指针与数组名
简单阐述一下指针的运算,和对数组名的阐释。原创 2023-03-16 18:28:33 · 91 阅读 · 0 评论