自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 驱动程序模板

设备号。

2024-04-10 22:46:48 279 1

原创 Linux内核驱动

在应用层是不能直接操作硬件。这个时候我们要学习如何将裸机代码放到操作系统,使其可以在应用层调用。首先要了解操作系统的驱动。

2024-04-10 09:18:35 399 1

原创 裸机开发---IIC(完)

2024-04-08 09:14:37 113 1

原创 ARM体系结构

b)系统中有很多的程序需要同时执行,它们要求的内存空间比实际的内存空间大。立即数:一个数循环右移(或按位取反)后所有的1在低8位(0~255),才能使用mov赋值。BIC:位清零 指令格式:BIC R0,R0,#0x0F 将R0最低4位清零,其余位不变。PC:程序计数器,指向正在执行的指令的下下一条指令。:地址总线(32位)、数据总线(32位)、控制总线(传送控制信号)量级:一般就几十个。LR:链接寄存器,保存函数的返回地址。:少出现跳转的,且跳转里面的内容少。用尖括号的不能省,大括号的可以省。

2024-04-02 17:03:41 223 1

原创 哈希表与哈希函数

哈希表(Hash Table)是一种数据结构,用于实现关联数组(Associative Array),即可以通过键(Key)来查找对应的值(Value)。哈希表使用哈希函数将键转换为数组下标,从而实现快速查找、插入和删除操作。哈希表的主要优点是查询速度非常快,时间复杂度接近O(1)。但是,哈希表的缺点是在数据量较大时,可能会出现哈希冲突(Hash Collision),即不同的键经过哈希函数计算后得到相同的哈希值。

2024-03-30 09:24:25 284 1

原创 指针(3)

返回值是指针的函数,绝不能返回局部变量地址。可以返回有static修饰的全局变量以及有static修饰的局部变量。返回值是一个指针(分配的内存空间的地址)。且分配的空间一定是连续的。分配的内存空间在堆区。第74、75行,p和p + 1之间差1 * sizeof(基类型)个字节,即40个字节。第70行就是定义了一个指向数组的指针。第72行:将数组a的首字节地址赋给指针。二维数组作为函数参数,形参为指向数组的指针。5、函数指针: 指向函数入口地址的指针。1、数组指针:指向数组的指针。3、指向二维数组的指针。

2024-02-04 20:49:33 328 1

原创 指针(2)

什么类型都能指,但是万能指针不能进行指针运算,运算结果变成了void型,C语言不允许出现void型变量。不确定实参时是什么类型时,就可以用void*2、指针p在栈区,p = “Hello World!在栈区的指针指向字符串常量区的字符串,程序会崩。1、注意sizeof(s) / sizeof(p)/ strlen(s)/ strlen(p)指针变量p可以指针去修改它所指向的变量的值,但是指针指向的变量不可以改。无法通过指针去修改它所指向的变量的值,但是指针指向的变量可以变。4、万能指针 (void*)

2024-02-03 20:56:42 300 1

原创 整型指针.

这里指针变量p1只能保存int型变量i的地址,指针变量p2只能保存double型j的地址。整型变量i地址占8个字节,*p指针也占8个字节。但是指针和指针可以相减(前提是相减的两个指针基类型相同),差表示两个指针之间差了几个sizeof(基类型)。直接访问是值传递的方式,不能通过被调函数修改主调函数变量的值。整型指针是指向整型数据的指针变量。8、&*或*&一起用会被抵消,但指针运算符右边必须是一个指针变量。这里的*指的是之后定义的变量是一个指针变量。11、指针置空(空指针)表达的是一种状态。

2024-02-02 21:02:07 501

原创 局部变量和全局变量 以及预处理命令

宏名通常都是大写 gcc -E -omain.i main.c(只做预处理命令不编译,到main.i) 所有的预处理命令,都是文本替换,不计算;静态生存期:某个变量的生存期和程序运行周期相同(全局变量,static局部变量),同样如果static局部变量没有被初始化,值也一定是0.6、extern:用extern声明外部变量, 外部变量是在函数的外部定义的全局变量,它的作用域是从变量的定义处开始,到本程序文件的末尾。全局变量:定义在函数之外定义的变量,它的有效范围是从变量定义开始到本源文件结束;

2024-02-01 21:25:22 341 1

原创 C语言 数组作为函数参数

栈区(stack):包含函数调用完后需要返回的地址、函数里定义的所有局部变量、函数定义时给出的形参的空间。值传递:形参是实参的复制品,主调函数向被调函数传参,只是将值传给被调函数的形参。指针传参:主调函数向被调函数传参,传的是地址。7、PC 程序计数器:是一个指针,指向当前正在执行的指令的下一条指令的地址。3、主调函数向被调函数传多个参数的时候,参数自右向左传入被调函数。程序是静态的,而进程是运行中的程序,是动态的。8、栈区、堆区、字符常量区、静态区(全局区)、代码区。4、值传递 和 指针传参。

2024-01-31 19:43:26 335

原创 二维数组和字符数组的应用

这是因为编译器在执行的时候会把\012当作一个八进制字符,而不会执行\0(字符串结束标志)。S[i]是一个长度为100的一维数组,用puts(s[i]);1、编译器在执行代码时会尽可能地多执行代码;5、使用函数的理由: 提高代码的复用性;函数里return语句会直接中止当前函数,返回main函数。返回值和定义类型不匹配,会造成返回值截断。如果两个函数里有同名变量,互不影响;3、字符型二维数组 定义并初始化。形参和实参类型匹配,包含隐式转换;被调函数在前,主调函数在后。4、打印字符型二维数组。

2024-01-30 21:57:55 363 1

原创 字符数组 二维数组

5、向数组中输入数组:gets();这里的s是数组的数组名,本身指的是地址,所以不用&;表达含义不同,前者是整型,长度为4个字节,后者是字符串,长度为5个字节。将数组s2里字符连在s1后 : strcat(const char *dest, const char * src);2、数组初始化:char s[10] = "hello";字符串的比较 strcmp(const char *s1,const char *s2);1、用来存放字符数据的数组是字符数组,字符数组中的一个元素存放一个字符。

2024-01-29 20:55:11 736

原创 一维数组.

注意:数组是一种用已有数据类型构造的新类型,类型说明符不能是void类型(空类型);12、插入排序:用一个新数组b,b数组的第一个元素和a数组的第一个元素相等,且b数组的长度要大于等于a数组。5、数组不能整体赋值,比如定义有一个数组a[ ];原因:数组的数组名为数组。10、选择排序:时间复杂度:O(n) = n^2;的首元素地址,左边的a是地址,右边的100是常量,所以a = 100;2、数组在存储空间内的三大特性:单一性、有序性、连续性。数组相邻两个元素两两比较,小的在前,大的在后。

2024-01-28 21:38:02 383

原创 循环控制.

注意:for语句中的表达式1可以省略,但需要在for语句之前给循环变量赋初值,并且for语句内表达式1后的分号是不能省略。9、break语句:要和case语句一起用或者用于循环语句内,循环里使用break,会终止循环。8、while,do...while,for三种循环可以互相转换,并且可以循环嵌套。执行过程:1 2 语句 3 1 2 语句 3..... 直到表达式2为假,结束循环。while语句有可能一次都不执行循环体,do...while语句至少执行有一次。注意:while(表达式)后分号不能省;

2024-01-26 21:27:53 358

原创 if 语句和switch语句

(1)if(表达式)语句例如:if(i > j)(2)if(表达式)语句1 else语句2例如:if(i > j)else(3)if(表达式1)语句1else if(表达式2)语句2else if(表达式2)语句2⁞else if(表达式n)语句nelse 语句n。

2024-01-25 21:01:45 372

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除