
嵌入式每日学习
每日面试题+算法题
熬混沉静
。
展开
-
嵌入式学习day18
管道:速度慢,容量有限,只能进行父子进程间的通信FIFO:任何进程间都可以通讯,但是速度慢消息队列:容量受到系统限制,且要注意第一次读的时候,要考虑上一次没有读完数据的问题。信号量:不能传递复杂消息,只能用来同步。共享内存:能够很容易控制容量,速度快,但是要保持同步,比如一个进程在写的时候,另一个进程要注意读的问题,相当于线程中的线程安全。原创 2024-05-13 10:50:53 · 286 阅读 · 0 评论 -
嵌入式学习day17
FIFO也称命名管道,它是一种文件类型。原创 2024-05-12 10:48:54 · 330 阅读 · 0 评论 -
嵌入式学习day16
在需要关闭管道时只需将这两个文件描述符close关闭即可。管道通常指无名管道,是unix系统IPC最古老的形式。fd[0]负责读fd[1]负责写。原创 2024-05-11 10:32:34 · 325 阅读 · 0 评论 -
嵌入式学习day15
设置一个临时变量来存储最小值的下标。将第一位与后面的数字进行比较,如果小于第一位就将下标改为小的数的下标,一轮循环结束后将第一位与最小值的交换。两层for循环,第一层来确定比较的轮数,第二层用来负责每一轮中比较相邻的元素。原创 2024-05-10 10:25:50 · 330 阅读 · 0 评论 -
嵌入式学习day14
思路:双指针,让一个指针先向前走k步,之后两个指针同步向前走,直到第一个指针走到NULL为止,此时第二个指针指向的节点几位倒数第k个节点。原创 2024-05-09 10:54:03 · 298 阅读 · 0 评论 -
嵌入式学习day13
由编译器自带分配释放,存在函数的参数值,局部变量等。:程序员自己申请,并指明大小(malloc函数):只要栈剩余空间>所申请空间,都会提供:操作系统有记录空间空闲内存的链表:收到申请→遍历链表→寻找→申请空间的堆节点:向低地址扩展的数据结果,连续内存区域,栈获得的空间较小。:向高地址扩展的不连续内存区域;链表遍历方向为低地址向高地址,堆获得空间灵活,空间也大。:系统自由分配,速度快:速度慢,容易产生内存碎片:主函数的下一条指令的地址、函数的各个参数,参数由右往左进栈、函数的局部变量(静态变量不入栈)。原创 2024-05-08 11:38:05 · 416 阅读 · 0 评论 -
嵌入式学习day12
①:改变作用域,改变(限制)其使用范围。只初始化一次,防止在其他文件单元中被引用。全局变量的作用域是整个源程序,在各个源文件中都是有效的,而加了静态后的全局变量的作用域仅限于一个源文件中。②:普通的局部变量是在函数或方法执行完毕后释放存储空间,而静态局部变量在程序开始执行时分配存储空间,直到程序结束才释放。这意味着即使函数或方法执行完毕,静态局部变量的值仍然会保留,并在下一次函数调用时保持其值。③:作用域不同,仅在本文件。原创 2024-05-07 11:34:55 · 391 阅读 · 1 评论 -
嵌入式学习day11
可以,在不同的C文件中各自用static声明的全局变量,变量名可能相同,但是各自C文件中的全局变量的作用域为该文件,所以互不干扰。原创 2024-05-06 22:25:37 · 353 阅读 · 0 评论 -
嵌入式学习day10
①用extern关键字方法②用引用头文件方式,前提是其中只能有一个C文件对此变量赋初值,此时连接不会出错。// file1.c// 全局变量定义// file1.h#ifndef FILE1_H // 包含守卫,防止头文件被重复包含// 声明全局变量// file2.c#include "file1.h" // 包含声明了全局变量的头文件// 引用全局变量// ...原创 2024-05-05 10:53:21 · 350 阅读 · 0 评论 -
嵌入式学习day09
①,函数递归调用时,系统要在栈中不断保存函数调用时的线程和产生的变量,递归调用太深,会造成栈溢出,这时递归无法返还。②。由于C语言中没有垃圾资源自动回收机制,因此需要程序员主动释放已经不再使用的动态地址空间。③,C语言中没有提供数组下标越界检查,如果在程序中出现数组下标访问超出数组范围,运行过程中可能会存在内存访问错误。④,指针保存了一个非法地址,通过这样的指针访问所指向的地址时会产生内存访问错误。原创 2024-05-04 11:14:02 · 286 阅读 · 0 评论 -
嵌入式学习day08
①前者从编译器自带的库函数中寻找文件,从标准库路径开始搜索文件。②后者是从自定义的文件中寻找文件,寻找不到再到库函数中寻找文件。原创 2024-05-02 10:47:27 · 576 阅读 · 2 评论 -
嵌入式学习day07
①引用必须初始化,指针不必初始化②引用初始化后不能改变,但是指针可以改变所指的对象③不存在空值的引用,但是存在空值的指针。原创 2024-05-01 13:16:26 · 465 阅读 · 0 评论 -
嵌入式学习day06
面试题+算法原创 2024-04-30 10:37:29 · 475 阅读 · 1 评论 -
嵌入式学习day05
结构体位域是一种数据类型,它允许在一个字节中存储多个不同长度的字段。给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。①并不需要完整的字节,节省存储空间,处理简单。原创 2024-04-29 10:41:01 · 473 阅读 · 0 评论 -
嵌入式学习day03
const用于定义常量。可与指针进行搭配使用,用于定于指针本身或指针指向的内容是常量。通常来说,变量的值会被缓存在寄存器中以提高访问速度,但对于使用volatile来修饰的变量来说,会直接读取内存中的值,而不是读取缓存中的旧值,这样做可以使得程序能够获取到变量的最新值。通常来说编译器会进行各种优化以提高代码的执行效率,但有时这些优化会忽略变量的实际变化。使用volatile修饰可以确保每次对于变量的访问都是基于实际的内存读取和写入操作。在多线程或并发编程环境中,多个线程可能同时访问和修改同一个变量的值。原创 2024-04-27 10:16:31 · 229 阅读 · 0 评论 -
嵌入式学习day02
1. 如何避免头文件被重复包含?利用条件编译来避免头文件被重复包含。条件编译由#ifndef #define #endif组成,例如:2. static关键字的作用?①定义全局静态变量:在全局变量前加上static,这个全局变量就变成了全局静态变量。这样的变量只能在定义它的源文件中可见,不能在其他源文件中通过extern关键字访问。此外,如果没有显式地初始化,其默认值为0②定义局部静态变量:保持变量持久,存储在静态存储区,会一直存在于程序执行期间,普通局部变量会在函数返回时消失。③定义静态函数:s原创 2024-04-26 10:10:06 · 370 阅读 · 1 评论 -
嵌入式学习day01
会首先编译#字开头的指令,比如拷贝#include包含的头文件代码,#define宏定义的替换,以及条件编译。完成预编译后,会进入编译阶段,将源代码转换为汇编语言,编译器会进行词法和语法分析,如果语法正确会生成汇编代码。①:程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项,将所有包含文件预编译为一个“预编译头”。②③:在数据库操作中,预编译的SQL语句可以有效防止SQL注入攻击。原创 2024-04-25 20:25:20 · 590 阅读 · 2 评论