
C语言
文章平均质量分 64
正在起飞的蜗牛
这个作者很懒,什么都没留下…
展开
-
C语言与堆栈的理解
C语言和堆栈的联系:C语言和栈:必须要先给C语言分配一个可用的栈空间,C语言才能运行,因为C语言里的临时变量都是放在栈空间里的,没有栈C语言是无法运行的。C语言和堆:堆空间就是我们申请的内存空间,用malloc函数申请的。C语言中当想要使用内存时就可以向堆区申请,但是使用时要注意及时释放不用的内存,以免造成内存泄漏。堆和栈的理解:完全不同的两个概念栈:栈是一种数据结构(先进先出),栈空间由系统管理,不需要申请和释放,C语言里的临时变量会自动放到栈里,压栈和弹栈都不需要程序员操心。堆:堆是一种特殊的原创 2021-04-04 00:03:50 · 4143 阅读 · 5 评论 -
busybox的实现原理分析(C语言实现简易版的busybox)
(1)busybox集成了常用的所有命令,可以很方便的构建文件系统。假设现在要构建文件系统,如果没有busybox,则需要去下载"ls、cd、mkdir······"每个命令的源码再编译,工作量很大且很繁琐;(2)busybox高度可裁剪,需要支持什么命令就配置busybox编译哪些命令的源码,有效减小busybox的体积,节省空间;原创 2022-11-16 22:41:27 · 1949 阅读 · 0 评论 -
Java的垃圾回收机制介绍
(1)垃圾收集GC(Garbage Collection)是Java语言的核心技术之一, 在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给了JVM来处理;(2)GC线程(Java虚拟机中的守护线程)负责垃圾回收,java程序员不用操心;(1)java的垃圾回收机制让程序员免于考虑对象的生命周期和资源的申请、释放,降低java程序员的编程难度;(2)垃圾回收机制的稳定性和效率取决于运行时环境(JVM等)设计和实现的好坏;原创 2022-09-24 12:45:58 · 2540 阅读 · 0 评论 -
C语言中双感叹号的作用
双感叹号的作用原创 2022-06-03 09:45:32 · 9107 阅读 · 0 评论 -
静态库和动态库介绍以及Makefile
1、库文件介绍(1)库文件的提供方式:静态库/动态库 + 头文件说明。其中头文件是说明静态库/动态库里都实现了哪些函数,就好像是库的说明书一样,使用库的开发者需要根据头文件来使用库;(2)库文件的实质:就是将很多.o文件打包在一起。其中涉及到程序的预编译、编译、汇编、链接等过程,.o文件就是只编译不链接的文件;2、库文件的作用1.加快项目开发:库文件可以将大工程划分为一个一个的模块,每个模块的代码以库的形式提供,库与库之间只需要提前商定好交互头文件,然后每个库的开发人员就按照头文件进行同步开发原创 2022-03-27 21:05:03 · 3626 阅读 · 2 评论 -
代码重定位
链接地址位置有/无关代码程序段代码重定位介绍代码重定位的意义原创 2022-03-15 23:51:13 · 1538 阅读 · 0 评论 -
C语言实现BMP格式转RGB格式、YUV格式
//BMP图片的压缩方式#define BI_RGB (0)#define BI_BITFIELDS (3)//RGB555的掩码#define RGB555_RED_MASK (31744)#define RGB555_GREEN_MASK (992)#define RGB555_BLUE_MASK (31)//RGB565的掩码#define RGB565_RED_MASK (63488)#defin原创 2021-07-11 23:46:59 · 2703 阅读 · 3 评论 -
代码运行一万遍和运行十万遍耗时一样吗
哔哩哔哩的视频原创 2021-07-11 22:17:45 · 803 阅读 · 0 评论 -
嵌入式开发——结构体指针作为参数传递变量的值不正确
#pragma pack(push)#pragma pack(4)#pragma pack(pop)原创 2021-07-09 00:53:08 · 1523 阅读 · 4 评论 -
嵌入式开发——#pragma pack()常见用法介绍
前言#pragma pack()是用来设置当前的对齐字节数的,C语言面试时结构体的对齐是常见考点。在嵌入式开发中,有时候是需要指定对齐字节数的,因为同样一份代码,有可能在32位的芯片里运行,也可能在64位的芯片里运行。为了保持兼容,可以用#pragma pack()来指定对齐字节,这样无论在什么环境里对齐字节数都是一样的,这样就可以避免因为对齐字节数不同导致的错误。常见用法#pragma pack(push)#pragma pack(4)此处省略n行代码#pragma pack(pop)原创 2021-07-07 23:50:27 · 4038 阅读 · 1 评论 -
C语言实现RGB packet格式转YUV(NV21)格式
void IVS_algRgbToNv12(Uint8* data, Uint32 w, Uint32 h, Uint8* yuv){ Uint32 row_bytes; Uint8* uv; Uint8* y; Uint8 r, g, b; Uint8 y_val, u_val, v_val; Uint8 * img; Uint32 i, j; y = yuv; uv = yuv + w * h; row_b原创 2021-06-30 15:04:09 · 989 阅读 · 0 评论 -
#ifdef __cplusplus extern “C“{ #endif的作用
https://www.cnblogs.com/HappyXie/archive/2011/01/07/1929369.html原创 2021-06-25 00:00:17 · 7043 阅读 · 0 评论 -
嵌入式开发中的链接地址、运行地址、加载地址、存储地址、实际运行地址的区别
前言这些概念是用来描述什么的?对这些概念进行分类总结如果程序是在flash里运行,则运行地址和加载地址是相同的。如果程序是在ram里运行,但程序是存储在flash里,则运行地址指向ram,而加载地址是指向flash。......原创 2021-06-20 19:25:28 · 1572 阅读 · 0 评论 -
goto语句在工作当中的用法
城市地产原创 2021-06-13 23:17:40 · 567 阅读 · 0 评论 -
汇编程序调用C语言
东方卫视原创 2021-06-09 00:37:24 · 1983 阅读 · 7 评论 -
C语言的强制类型转换本质是什么?
发的原创 2021-05-16 20:26:53 · 1947 阅读 · 2 评论 -
常见面试题--memcpy()和strcpy()的区别
dfs原创 2021-05-08 23:32:23 · 735 阅读 · 0 评论 -
条件编译在工作当中的应用
复旦复原创 2021-05-08 00:52:04 · 1544 阅读 · 0 评论 -
register关键字详解
辅导书原创 2021-05-07 23:21:36 · 7440 阅读 · 4 评论 -
C语言中volatile关键字详解以及常见的面试问题
上档次原创 2021-05-06 22:40:32 · 1251 阅读 · 1 评论 -
__attribute__((weak))介绍以及用法
WEAK __attribute__((weak)) WEAK 函数声明在没有链接算法库时能编译通过 弱符号函数使模块的函数转换为弱符号类型,连接器发现同时存在弱符号和强符号,优先选择强符号,如果发现不存在强符号。只存在弱符号,则选择弱符号。 如果都不存在,静态链接失败报错 3> RY_API __declspec(dllexport) __declspec(dllexport) 和 __declspec(dllimport) 都是DLL的关键字,即导入与导.原创 2021-05-06 10:40:37 · 8977 阅读 · 0 评论 -
atoi()函数的原理分析和代码实现
的算法原创 2021-05-05 23:11:26 · 1250 阅读 · 0 评论 -
宏函数、普通函数、内联函数的区别
当时的原创 2021-05-05 22:51:46 · 308 阅读 · 0 评论 -
static修饰的函数能不能在其它文件里使用
大萨达原创 2021-04-30 00:35:12 · 8633 阅读 · 1 评论 -
在结构体最后定义一个成员数为0的数组的意义以及工作当中的使用
手动阀原创 2021-04-24 23:30:19 · 1371 阅读 · 0 评论 -
c语言中NULL到底是什么?
1.NULL在C/C++中定义为:#ifdef _cplusplus // 定义这个符号就表示当前是C++环境#define NULL 0 // 在C++中NULL就是0#else#define NULL (void *)0 // 在C中NULL是强制类型转换为void *的0#endif2.由上可知,在C和C++中NULL是略有差异的,在C++中NULL就是数字0,在C中NULL是个指针变量,指向地址0。在C语言中,int *p;你可以p = (int *)0;原创 2021-04-18 23:22:49 · 44146 阅读 · 4 评论 -
C语言中的函数重名问题和解决方法
什么是函数重名问题?在实际工作中,一个产品的代码是很复杂的,需要分层原创 2021-04-18 22:12:46 · 14591 阅读 · 1 评论 -
C语言中static关键字用法和作用
static修饰的对象:static关键字可以修饰:局部变量、全局变量、函数static修饰后改变了什么?1.改变了生存周期;2.改变了作用域;static修饰不同对象时的作用:1.局部变量:局部变量就是在函数内定义的变量,普通的局部变量,生存周期是随着函数的结束而结束,每次函数重新执行,局部变量都是新的值,不会保留上次的值。当用static修饰后,局部变量的生存周期就是当程序结束才会结束。.........原创 2021-04-11 11:51:07 · 32431 阅读 · 12 评论 -
C语言大小端介绍和测试方法
大小端定义:大端:数据高位对应低地址小端:数据高位对应高地址解释:数据的高低位是对于要存储的数据而言的,高低地址是针对内存来说的(内存以字节为单位)。比如:0X87 65 43 21,数据的高位是87,低位是21大端模式在内存中存放数据:高地址----->低地址0X21 ,0X43 ,0X65 ,0X87小端模式在内存中存放数据高地址----->低地址0X87 ,0X65 ,0X43 ,0X21用共用体的方式来测试:原理:利用共用体的成员共享同一块内存,并且同时只能访问一原创 2021-04-10 23:58:48 · 1664 阅读 · 2 评论 -
C语言中两个.a库之间交互头文件的修改注意事项
交互头文件的作用和重要性原创 2021-04-09 22:37:35 · 420 阅读 · 0 评论 -
线程绑定CPU核详解
线程绑定CPU核的意义:在多核CPU中合理的调度线程在各个核上运行可以获得更高的性能。在多线程编程中,每个线程处理的任务优先级是不一样的,对于要求实时性比较高的线程或者是主线程,对于这种线程我们可以在创建线程时指定其绑定到某个CPU核上,以后这个核就专门处理该线程。这样可以使得该线程的任务可以得到较快的处理,特别是和用户直接交互的任务,较短的响应时间可以提升用户的体验感。绑定的过程:几个重要的宏操作:一个线程的CPU亲合力掩码用一个cpu_set_t结构体来表示一个CPU集合,下面的几个宏分别对原创 2021-03-04 20:30:31 · 11385 阅读 · 2 评论 -
offsetof宏与container_of宏
offsetof宏作用:用宏来计算结构体中某个元素相对于结构体首地址的偏移量原创 2021-01-28 23:55:12 · 187 阅读 · 0 评论 -
RGB格式图片的裁剪函数
#define OK (0)#define FAIL (-1)typedef struct point{ int x; int y;}point_t;//裁剪区域信息斜体样式typedef struct rect{ point_t ul;//up-left 左上角坐标 point_t lr;//low-rught 右下角坐标}rect_t;/*************************************************************函数名:R原创 2020-10-16 00:10:46 · 979 阅读 · 0 评论 -
文件I/O和标准I/O的区别
文件I/O文件I/O是操作系统提供的操作文件的API。例如Linux中的open()和write()等。这些函数可以完成文件的操作,但是效率不一定很高。标准I/O标准I/O是应用层提供的库函数,例如C语言提供的文件操作函数fopen() 、fclose()等。这些标准I/O其实是封装的文件I/O。标准I/O封装的原因主要是在应用层添加一个缓冲区,例如调用fwrite函数,写入的数据是先写到标准I/O自己维护的缓冲区中,然后标准I/O根据操作系统单次write的最佳count来选择好的时机来将应用原创 2020-10-08 03:39:57 · 402 阅读 · 0 评论 -
const关键字与指针
const指针的运用1.指针包含的地址是常量,不能被修改,但可以修改指针指向的数据int x = 10;int* const p = &x;*p = 34;//指向的数据可以修改int y = 32;p = &y;//不能修改P指向的地址2.指针指向的数据是常量,不能修改,但是可以修改指针包含的地址int x =32;const int *p = &x;...原创 2019-05-20 01:00:33 · 215 阅读 · 0 评论 -
myQsort()排序函数
题目说明:实现一个函数myQsort()可以对Int char 字符串或者其他类型进行排序的函数。(提示函数只需要提供排序方法,比较方法通过函数指针,让用户自定义)示例代码#include<stdio.h>#include<stdlib.h>#include<string.h>struct A{ char name[20]; int num;...原创 2020-02-27 15:56:19 · 539 阅读 · 0 评论 -
C语言头文件详解
include的作用简单一句话:在include的地方,把头文件里的内容原封不动的复制到引用该头文件的地方。头文件的引用头文件引用有两种形式:#include < stdio.h> 和 include "main.h “。用< >引用的一般是编译器提供的头文件,编译时会在指定的目录中去查找头文件。具体是哪个目录,编译器知道,我们不用关心。用” “引用的一般是自己写的.........原创 2019-05-11 14:08:47 · 102093 阅读 · 7 评论