- 博客(22)
- 收藏
- 关注
原创 网络编程常见面试题
路由器是在网络层(第三层)上实现的设备,主要用于不同网络之间的数据转发。当路由器接收到一个数据包时,它会查看数据包中的目标IP地址,并在路由表中查找对应的下一跳。交换机是在数据链路层(第二层)上实现的设备,主要用于局域网内部的数据转发。当交换机接收到一个数据帧时,它会查看数据帧中的目标MAC地址,并在MAC地址表中查找对应的接口。总结起来,交换机和路由器在网络中起着不同的作用。是一种无连接的协议,提供不可靠的、无序的、面向数据报的数据传输。是一种面向连接的协议,提供可靠的、有序的、面向字节流的数据传输。
2023-09-20 22:26:35
113
原创 C语言指针复习((未完善)
2.小心越界(C语言本身不会检查数据越界行为);*ptr = 10;(段错误),因为:NULL是0,这块空间没有分配给我们用户,所以要if(p!允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针比较,但是不允许与指向第一个元素之前的那个内存位置的指针进行比较。指针 - 指针:两个指针之间元素个数(前提:指向同一块空间 )1.指针类型决定了:指针解引用的权限有多大;2.指针类型决定了:指针走一步能走多远。
2023-09-18 21:45:56
81
原创 什么是进程,什么是线程,以及他们的区别
进程:系统分配资源的最小单元,一个进程可以包含多个线程。线程:系统任务调度的最小单元区别:(1)进程间的地址空间是相互独立的,,所以进程间进行数据交换必须使用IPC,而线程共享进程的地址空间,(2)通信与同步:进程间通信需要使用特定的机制,如管道、消息队列、共享内存等。而线程间通信更为直接,可以通过共享内存、全局变量等方式进行通信。线程间的同步可以通过互斥锁、条件变量等机制实现,进程间的同步可以通过信号量、管道等机制实现。(3)稳定性:由于进程间的资源相互独立,一个进程的崩溃不会影响其他
2023-09-12 19:26:00
73
原创 volatile关键字
加上volatile关键字生成的汇编代码会发生明显的变化,同样调用delay函数,灯的速度发生变化!2)裸机编程的时候,某函数与中断服务函数共享全局变量的时候,该全局变量要加上。编译器不要优化该变量指的是防止编译器出现优化过度,导致代码运行失效。3)ARM定义寄存器的时候,寄存器是指向一个地址,要加上。1)多线程编程共享全局变量的时候,该全局变量要加上。进行修饰,让编译器不要优化而省略该变量的访问。进行修饰,让编译器不要省略该变量的访问。进行修饰,让编译器不要省略该变量的访问。
2023-08-31 21:57:41
39
原创 文件IO,以及对文件操作的常用命令
(1)普通文件(-)(regular):最常使用的一类文件,按照其内部结构又可分为纯文本文件(ASCII)、二进制文件(binary)、数据格式的文件(data)、各种压缩文件。要对一个文件进行操作,首先必须“打开”它,打开两个字之所以加上冒号,是因为这是代码级别的含义,并非图形界面上所理解的“双击打开”一个文件。文件描述就是已经打开的文件的索引(file descriptor),后续的读写操作都是要拿到这个索引,才可以对文件进行读写。(3)管道文件(p)(pipe):用于不同进程的信息传递。
2023-08-20 15:13:36
49
1
原创 封装函数strcpy,strncpy,strcat,strlen
rturn true;int i;for(i = 0;= '\0';i++)for(;i < n;i++)++dest;return -1;= '\0')len++;return len;
2023-08-15 21:41:07
46
原创 选择,冒泡,快速三种排序(精讲)
注意:无论哪种情况,哪怕原数组已排序完成,它任然进行n(n+1)/2次比较。3.对于基准数左右两边的数组,对左右子序列不断重复上面两个过程,直到每个子集只有一个元素,即全部有序。1.在待排序的一组数据中,选出最小(最大)的一个数与第一个交换。2.然后在剩下的数中,再找最小(最大)的数与第二个位置的数交换。2.将数组中小于基准数的数据移到基准数左边,大于的移到右边;3.以此类推,直到第n-1个元素与第n个元素交换,结束。1.比较相邻元素,如果第一个比第二个大,就交换;进行9次循环,每次进行9-i次比较。
2023-08-13 14:32:07
54
1
原创 力扣:合并两个有序链表,按从小到大排序
解题思路:创建一个新的链表head用来存放合并后的链表,创建两个新的指针pA,pB分别指向head1和head2链表的首节点,pnew指向拆下来的节点, 比较pA,pB的数据大小,一个个的向后遍历,直到其中一个短的指向NULL;把另外一个的长的接到head后面,最后释放空间。
2023-08-02 12:50:30
173
原创 宏,枚举,tepedef的区别和应用场景(面试题)
总结: 宏、枚举和typedef是C语言中常用的定义类型的方式,它们分别具有不同的特点和应用场景。宏适用于简单的文本替换,枚举适用于定义一组相关的常量,typedef适用于给已有类型取别名。在实际应用中,根据具体情况选择合适的方式进行类型定义。应用场景:typedef常用于简化复杂的数据类型、增加代码的可读性,也常用于定义函数指针类型、结构体类型等。
2023-07-27 20:05:14
48
1
原创 C语言函数
调用一个函数,这个函数传递函数指针,被调用的的这个函数通过这个函数指针进行调用其他函数,我们把这种方式称为回调函数。1.将c文件进行预编译,作用是将头文件里面的内容进行展开,就是将头文件的内容拷贝到main函数上面。堆是唯一可被开发者自定义的区段,开发者可以根据需要申请内存的大小、决定使用的时间长短。malloc不会清空,有一些随机数要手动清空,可以用msmset()赋值,以字节为单位。释放堆内存:free() 只能释放堆内存,并且只能释放整块堆内存。申请堆内存:malloc() / calloc()
2023-07-22 17:40:18
46
c语言数据结构航班信息的录入
2023-08-13
TA创建的收藏夹 TA关注的收藏夹
TA关注的人