- 博客(51)
- 收藏
- 关注
原创 【气动技术】气动真空系统及其选型计算
本文从气动真空系统的定义出发,介绍了真空系统的组成,包括气源、执行元件、其他元件,最后结合实际案例对真空发生器及真空吸盘的选型计算进行了分析。
2025-10-31 21:49:05
878
原创 【气动技术】气动执行元件及其选型计算
本文介绍了单轴、双轴、三轴气缸、气动手指及回转气缸的型号、特点和工作原理,并结合案例对其进行了选型计算分析
2025-10-22 14:28:46
1386
原创 【c语言】程序的编译和链接
因为宏已经被展开。并且包含的头⽂件都被插⼊到 .i⽂件中。所以当我们⽆法知道宏定义或者头⽂件是否包含正确的时候,可以查看预处理后的 .i ⽂件来确认。
2025-05-19 10:26:24
990
原创 【c语言】动态内存分配
这个问题就像张三第一天去酒店302开了一间房,把李四要找的东西放在这了,然后告诉李四这间房现在属于我,明天可以来拿东西,但是第二天张三退房了,把302房间(内存)还给了酒店(操作系统),如果302房间被打扫了,那么李四要找的东西就不在了(返回给操作系统的内存被拿去使用了),如果侥幸302房间还没被打扫(操作系统没有用这块空间存储别的数据),那么东西还能找到(可能会打印hello word)。这里动态开辟内存后,直接对其进行释放,这时str指向的空间返回给操作系统,str就是野指针,if后的内容是非法访问。
2025-05-15 22:21:22
1266
原创 【c语言】自定义类型:联合体和枚举
enum Sexenum Sex为枚举类型,{}内为枚举常量,这些值默认从0开始,依次递增,也可以在声明枚举类型的时候赋初值。
2025-05-15 12:16:28
893
原创 【c语言】自定义类型:结构体
位段的几个成员共用一个字节,这样有些成员的地址并不是某个字节的起始地址,这些位置处是没有地址的。内存中内个字节分配一个地址,一个字节内部的比特位是没有地址的,因此不能对位段成员进行取地址操作,也就不能用scanf对位段成员输入值,只能先放在变量中,再复制给位段成员。如果传递一个结构体对象的时候,结构体过大,参数压栈的系统开销会比较大,会导致性能的下降。因此,在设计结构体的时候,应尽量让空间小的成员集中在一起,这样可以节省内存空间。函数传参的时候,要进行压栈操作,会有时间和空间上的开销;
2025-05-14 21:51:46
900
原创 【c语言】数据在内存中的存储
数据的内容存放在内存的处,数据的内容存放在内存的处,对于0x11223344:数据的内容存放在内存的处,数据的内容存放在内存的处,对于0x11223344。
2025-05-03 23:07:22
1070
原创 【c语言】内存操作函数
如果从前向后进行拷贝,蓝色框内的4首先被黑色框内的3覆盖,当蓝色框的5要被黑色框的4覆盖时,4已经变成了3,内存空间存在重叠,因此不能成功;如果从后向前覆盖,4先被5覆盖,3要被4覆盖时,4已经不存在了,内存重叠,这种方法不能成功。如果从后向前进行拷贝,6先被5覆盖,然后5被4覆盖,4被3覆盖,不会冲突,方法可行.如果从前向后拷贝,2先被3覆盖,然后3被4覆盖,4被5覆盖,可行;从后向前拷贝,9先被5覆盖,8被4覆盖,7被3覆盖,也可行;从前向后拷贝,7先被3覆盖,8被4覆盖,9被5覆盖,可行;
2025-05-02 13:10:43
1069
原创 【c语言】字符串函数
s1++,s2++,相等,再++,还相等,再++,此时s1指向的b和s2指向的c不相等,那么说明s1从第一b的位置开始找,一定是找不到str2的,因此,s1应该在后一个位置开始比较。,str2不动,在进行比较,若不想等,str1就一直+1,直到两者相等,之后str1++,str2++,在进行比较,若相等,str1和str2一直+1,直到str1或str2指向\0的位置,就找完了,然后返回str2与str1两个字符第一次相等的地址。思路:先找到目标空间字符串的 \0,找到要拼接的位置,然后进行字符串拷贝。
2025-05-02 10:19:32
1113
原创 【c语言】深入理解指针4——sizeof和strlen
a是指针数组,存放指针的数组,共有三个元素,分别是w、a、a、的地址,a为数组首元素地址,也就是字符串“work”中’w’的地址,二级指针变量pa指向它,pa++后,指向“at”中’a’的地址,打印字符串得到的是 at.: cpp[-2] == *(cpp-2),得到cp[0],解引用找到的是c+3,指向字符F的地址,再+3向后跳过3个地址,找到S的地址,打印字符串得到。找到二级指针cp[1],存的是c+2的地址,再-1找到的是c+1,字符N的地址,+1跳过一个元素,打印的是。
2025-04-21 19:28:52
1157
原创 【c语言】深入理解指针3——回调函数
回调函数:通过调用的函数.当把一个函数的地址传递给另一个函数,通过该地址去调用其指向的函数,那么这个被调用的函数就是回调函数.示例:这里加入想实现加法函数的功能,并没有直接在主函数中直接调用加法函数Add,而是通过另一个函数calc中函数指针变量来接受Add函数的地址,然后,因此,这里,即Add、Sub、Mul、Div是回调函数.
2025-04-18 22:56:36
658
原创 【c语言】深入理解指针2
指针数组到底是指针还是数组呢?数组 int arr[] : 存放的数组;数组 char arr[] : 存放的数组;数组 int* arr[] : 存放的数组.因此,本质上是,数组中的每个元素都存放的是(指针),每个元素的类型为示例:下方代码中parr先和 [ ] 结合,因此它是一个数组,这个数组有3个元素,每个元素的类型为int*将数组名去掉就可以看出它的类型,即int* [3],也就是。
2025-04-17 22:38:44
1018
2
原创 【c语言】深入理解指针1
但是&arr的值和arr的值是一样的,本质上都是数组首元素的地址,因为整个数组的地址也是从数组第一个元素的地址开始的。p存放的是a的地址,p是一个指针变量,它的地址存放在pp中,pp则是二级指针变量。结果上来看 arr == &arr == &arr[0]sizeof(arr) : 整个数组在内存中的大小。比如计算函数内部和函数外部数组元素个数。&arr : 整个数组的地址。示例:编写函数打印数组。
2025-04-16 23:14:16
406
原创 【数据结构与算法】——树和二叉树(上)
树和二叉树树的概念和结构什么是树与树有关的概念树的表示方法树在实际中的应用二叉树的概念和结构概念特殊二叉树满二叉树完全二叉树二叉树的性质二叉树的储存结构顺序结构三级目录树的概念和结构什么是树树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树的原因是它看起来像一颗倒挂的树,根朝上,叶朝下。注意:在树形结构中,子树之间不能有交集,否则就就不是树形结构与树有关的概念节点的度:一个节点含有的子树的个数称为该节点的度; 如上图:A的子树位A的度为
2022-06-06 01:16:08
956
15
原创 【leetcode622】——设计循环队列
循环队列题目描述思路分析代码实现MyCircularQueue(k):构造器isEmpty(): 检查循环队列是否为空isFull(): 检查循环队列是否已满enQueue(value): 向循环队列插入一个元素deQueue(): 从循环队列中删除一个元素Front: 从队首获取元素Rear: 获取队尾元素释放空间,防止内存泄漏题目描述设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。循环队列的一个好处是我们可以利用这
2022-05-06 11:02:00
438
16
原创 【数据结构与算法】——队列
队列队列的定义队列的基本操作三级目录队列的定义只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out)入队列:进行插入操作的一端称为队尾出队列:进行删除操作的一端称为队头队列的基本操作队列采用链表而不用数组的原因:由于队列的结构是先进先出,出队列的时候,数组每次都需要覆盖掉第一个数据,效率很低,而链表可以直接在队头出数据,队尾入数据,时间复杂度都是O(1).定义一个队列typedef struct Queu
2022-05-06 07:11:50
1001
2
原创 【牛客刷题】——链表分割
链表分割题目描述思路分析代码实现题目描述现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针思路分析我们令cur=pHead让cur遍历链表,在开辟两个新结点lessHead和greaterHead,把链表分为两部分,第一部分是小于x的结点放在lessHead->next里,大于x的结点放在greaterHead->next里当cur走到NULL时,让lessTail-
2022-04-28 09:43:02
305
6
原创 【leetcode】——合并两个有序链表
合并两个有序链表题目描述思路分析代码实现题目描述将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:思路分析以此实例为例,用newhead来保存新链表的头结点,然后比较两个链表的头结点数据,取出较小的,尾插到新链表,直到其中一个链表的指针走到NULL,这时直接把另一个链表剩余结点全部尾插就可以了代码实现struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l
2022-04-27 23:50:44
558
原创 【牛客刷题】——链表中倒数第K个结点
链表中倒数第K个结点题目描述思路分析代码实现题目描述思路分析我们可以使用快慢指针的方法,定义两个指针,fast为快指针,slow为慢指针。先让fast走k步,然后让fast和slow同步向前走,当fast走到NULL时,slow恰好走到倒数第k个数。我们以k=2为例:代码实现struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) { struct ListNode* fast,*slow; fast
2022-04-27 15:47:28
937
原创 【leetcode876】——链表的中间结点
链表的中间结点题目描述思路分析代码实现题目描述给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。思路分析快慢指针:定义两个指针,fast和slow,fast指针一次走两步,slow指针一次走一步,当链表结点个数为奇数个时,fast走到尾,slow正好走到中间,当链表结点为偶数个,fast为空时,slow正好走到中间第二个代码实现struct ListNode* middleNode(struct ListNode* head){
2022-04-08 23:30:32
202
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅