嵌入式软件必学知识总结!

lightindark 2020-06-03

1.sizeof(char) 这个语句的意思是得到 char 类型的字节数, char* 是一个指针类型,占4个字节,所以运行结果应该是4.

2.strlen和sizeof区别。

sizeof是算符,strlen是函数。sizeof可以用类型做参数,strlen只能用char*做参数。

strlen指字符的长度,char a[20]="you are a",strlen(a)=9,sizeof(a)=20;sizeof指文件或者数据占的内存(字节),int a[20],sizeof(a)=80。

3.整数数组清零:bzero(),memset()。

4.异步IO和同步IO区别

如果是同步IO,当一个IO操作执行时,应用程序必须等待,直到此IO执行完,相反,异步IO操作在后台运行,

IO操作和应用程序可以同时运行,提高系统性能,提高IO流量; 在同步文件IO中,线程启动一个IO操作然后就立即进入等待状态,直到IO操作完成后才醒来继续执行,而异步文件IO中,

线程发送一个IO请求到内核,然后继续处理其他事情,内核完成IO请求后,将会通知线程IO操作完成了。

5.char在c语言中占一个字节,共4位,大小为-128-127.故0x80=-128

int foo(void)

{

int i;

char c=0x80;

i=c;

if(i>0)

return 1;

return 2;

}返回值为2;因为i=c=-128;如果c=0x7f,则i=c=127。

6.位运算比乘除以及取模运算效率要高;

a=b*2 -> a=b<<1;

a=b/4 -> a=b>>2;

a=b%8 -> a=b&7;//仅仅适用于除数为2的次方情况,10%3则不适用

a=b/8*8+b%4 -> a=((b>>3)<<3)+(b&3)

a=b*15 -> a=(b<<4)-b

7.异或运算又称“半加运算”,即满2取0不进位,例:1^1=0,1^0=1,0^1=1;0^0=0;

0x1001^0x1100=0x1101;

由上图中加黑式可知,异或运算可用来取反,即无论0或1与1异或均可得到其相反数。

故:

如何对一个十六进制数的某一位取反,用C语言写?

第n位取反同(1 <

0X2F第三位取反,则0x2F^(1<<2)=0x2B;//注意是第三位而非bit3!

8.大端小端是两种不同的数据储存格式;

小端:低位字节数据存储在低地址

大端:高位字节数据存储在低地址

例如:int a=0x12345678;(a首地址为0x2000)

0x2000 0x2001 0x2002 0x2003

0x12 0x34 0x56 0x78 大端格式

9.&和&&的区别:

& 不管前面的条件是否正确,后面都执行

&& 前面条件正确时,才执行后面,不正确时,就不执行,就效率而言,这个更好。

&&”是逻辑运算中的“短路”,若"&&"前的条件为false时判断结果为false,不再执行"&&"后的语句块。"&&"前为true则继续进行进行后半部分的判断 。

如果&&运算符的第一个操作数是false,就不需要考虑第二个操作数的值了,因为无论第二个操作数的值是什么,其结果都是false。同样,如果第一个操作数是true,||运算符就返回true,无需考虑第二个操作数的值。但&和|却不是这样,它们总是要计算两个操作数。

————————————————

如果没有看明白,可以观看视频进行学习:

嵌入式开发职业规划

http://www.makeru.com.cn/live/1392_308.html?s=143160

嵌入式行业发展跟现状分析

http://www.makeru.com.cn/live/1392_401.html?s=143160

完美简历该如何打造

http://www.makeru.com.cn/live/5562_1947.html?s=143160

欢迎进入嵌入式大神群进行学习 (858330377)

相关推荐