- 博客(17)
- 收藏
- 关注
原创 递归的一些经典算法
1、斐波那契数列 0, 当n=0;F(n) = {1, 当n=1; F(n-1) + F(n-2), 当n>1;int Fbi(int i){ if(i < 2) return ((i == 0) ? 0 : 1); return Fbi(i-1) + Fbi(i-2);}...
2019-08-29 16:58:31 654
原创 编译器优化问题
首先来分析一段代码:char *a = "hello";char *b = "hello";if(a == b) printf("YES");else printf("NO");"hello"是一个常量字符串,位于静态存储区,它在程序生命期内恒定不变。如果编译器优化的话,会有可能a和b同时指向同一个hello的,这时地址相同;如果编译器没有优化,那么就是两个不同的地...
2019-08-29 16:15:49 587
原创 使用位域的结构体内存分布
首先来看两个结构体:struct s1{ int i : 8; int j : 4; int a : 3; double b;}struct s2{ int i : 8; int j : 4; double b; int a : 3;}printf("%d %d\n",sizeof(s1),sizeof(s2)...
2019-08-28 19:25:34 513 2
原创 C语言贪心法
C语言有这样一个规则:每一个符号应该包含尽可能多的字符。也就是说,编译器将程序分解成符号的方法是,从左到右一个一个字符的读入,如果该字符可能组成一个符号,那么再读入下一个字符,判断已经读入的两个字符串是否可能是一个符号的组成部分;如果可能,继续读入下一个字符,重复上述判断,直到读入的字符组成的字符串已不可能组成一个有意义的符号。 这个处理的策略被称为“贪心法”。 需要注...
2019-08-28 15:43:09 270
原创 嵌入式系统中固定内存位置的访问,中断的使用以及动态内存分配
一、嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。int *ptr;ptr = (int *)0x67a9;*ptr = 0xaa66;a more obscure approach is: *(int *const)(0x67a9) = 0xaa66;...
2019-08-28 15:21:14 960
原创 分别写出BOOL,int , float,指针类型的变量a与“零”的比较语句
BOOL: if(a) or if(!a);int: if(0 == a);float: const float EXP = 0.000001; if(a<EXP && a>-EXP);pointer: if(a != NULL) or if(a == NULL);
2019-08-28 14:56:51 932
原创 位操作(Bit manipulation)
嵌入式系统总是要用户对变量或寄存器进行位操作。给定一个整型变量a,写两段代码,第一个设置a的bit3,第二个清除a的bit3。在以上两个操作中,要保持其他位不变。用#define和bit mask操作,这是一个有极高可移植性的方法。#define BIT3 (0x01 << 3)static int a;void set_bit3(void){ ...
2019-08-26 20:02:47 415
原创 简述数组和指针的区别
数组要么在静态区被创建(如全局数组),要么在栈上被创建。指针可以随时指向任意类型的内存块。 (1)修改内容上的差别char a[] = "hello";a[0] = 'x';char *p = "world"; //注意p指向常量字符串p[0] = 'x'; //编译器不能发现该错误,运行时错误 (2)用运算符si...
2019-08-26 19:44:16 489 1
原创 关键字volatile以及相关问题
一个定义为volatile的变量,编译器(优化器)每次用到这个变量时必须从该变量的地址处读取该值,而不是保存在寄存器里的备份。比如: ①多线程应用中被几个任务共享的变量。 ②并行设备的硬件寄存器(如状态寄存器)。 ③一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)。Q1:一个参数既可以是const还可以是volatil...
2019-08-26 19:23:08 109
原创 全局变量可不可以定义在可被多个.c文件包含的头文件中?
可以,在头文件或不同的c文件中用static来修饰同名全局变量。另外一点,可以在不同的c文件中声明同名的全局变量,前提是其中只能有一个c文件中对此变量赋值,此时链接不会出错。extern和static不能同时修饰同一变量。链接规范,每个c/c++的定义都有链接规范(linkage)的属性。外部链接(external linkage)的定义可被定义处以外的翻译单元看见并引用。 ...
2019-08-26 17:30:32 8172
原创 虚拟机无法识别USB
虚拟机无法识别USBcat /etc/group | grep vboxwhoamisudo usermod -a -G vboxusers 系统名字cat /etc/group | grep vboxsudo reboot-c, --comment 注释 GECOS 字段的新值 -d, --home HOME_DIR 用户的...
2019-08-12 15:04:34 891
原创 C语言内存管理
1、栈区 保存局部变量。栈上的内容只在函数的范围内存在,当函数运行结束,这些内容也会自动被销毁。其特点是效率高,但空间大小有限。2、堆区 由malloc系列函数或new操作符分配的内存。其生命周期有free或delete决定。在没有释放之前一直存在,直到程序结束。其特点是使用灵活,空间比较大,但容易出错。3、数据区 ①bss区:(Block...
2019-08-07 15:54:29 151
原创 用链表和指针编写通讯录v1.0
/* 知识点总结:指针部分: 1、定义使用一个指针: ①声明 char * p; ②申请内存 p = (char *)malloc(sizeof(char)*n);malloc申请下来的内存空间用来存放*p的值; ③给指针p赋值 p = NULL; ④free(p) 2、无法把指针变量本身传递给一个函数。解...
2019-08-07 15:11:37 189
转载 mtk手机线刷
mtk手机线刷mtk手机刷机一般都是使用smart phone flash tool, 以我的mt6582为例,其刷机的界面如下图1所示图1 MT6582刷机界面:刷机流程如下图2所示:图2 线刷镜像下载过程:线刷流程1、设备上电后,最先运行的就是BootROM的代码(BootROM是固化在手机内部芯片中的(应该是一个NOR Flash芯片), 其代码是无法通过刷机写进去的,...
2019-08-05 11:06:57 2722
转载 ubuntu连adb 以及 使用MTK FLASH TOOLS的配置
转载:https://blog.csdn.net/reasonboy/article/details/898885671.adb连接lsusb//查看设备注意红色框中的内容对应后面需要填入的ATTRS{idVendor}, ATTRS{idProduct}sudo gedit ~/.android/adb_usb.ini把插入设备的ATTRS{idVen...
2019-08-02 16:54:59 648
原创 Ubuntu编译安卓源码出错及解决方法
ninja: no work to do.[1/1] out/soong/.bootstrap/bin/soong_build out/soong/build.ninjaFAILED: out/soong/build.ninjaout/soong/.bootstrap/bin/soong_build -t -l out/.module_paths/Android.bp.list -b ou...
2019-08-02 09:29:51 24186 7
原创 3A和ISP算法概念梳理
AE的相关概念:1、确认Ev offset正确性是什么意思?类似于OB offset,对应于LSB中的LV的等级进行补偿校正。2、target = (THD/Y)*CWV THD :from parameterY :from N% of histogram brightness value.CWV :centre weighting value3、ob offset?...
2019-08-01 13:41:39 7106
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人