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)