1、用预处理指令#define声明一个常数,用以表明1年中有多少秒(不考虑闰年问题)?
  解答:
  #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
  知识点:
  #define语法的基本知识(例如不能以分号结束,括号的使用等等);
  明确这个表达式会造成一个8位机或16位机的整型数溢出,因此要用到长整型符号L或UL,告诉编译器这个常数是长整型数;
  
  2、写一个"标准"宏MIN,这个宏输入两个参数并返回较小的一个?
  #define MIN(A,B) ( (A) <= (B) ? (A) : (B) )
  知识点:
  #define宏定义应用的基本知识;
  三重条件操作符的知识,这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码;
  懂得在宏中小心地把参数用括号括起来;
  
  3、用变量a给出如下定义:
  定义一个指向指针的指针,它指向的指针是指向一个整形数?
  定义一个有10个指针的数组,指针是指向整形数?
  定义一个指向有10个整形数数组的指针?
  定义一个指向函数的指针,该函数有一个整型参数并返回一个整形数?
  定义一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数?
  int **a;
  int *a[10];
  int (*a)[10]
  int (*a_function)(int b);
  int (*a[10])(int);
  
  4、在C语言中,关键字static的作用?
  在函数体内部使用static声明一个变量,此静态变量只能在该函数内部使用,但函数退出时该变量不被销毁,依旧占用内存;
  在模块内但函数体外使用static声明一个变量,该变量可以被模块内所有函数访问但不能被模块外其它函数访问,它是一个本地的全局变量;
  在模块内使用static声明一个函数,该函数可被该模块内的其它函数调用,但不能被其它模块的函数调用;
  
  5、关键字volatile有什么含义?并举例使用场景?
  解答:
  一个定义为volatile的变量意味着该变量可能随时会被意想不到的改变,处理器在使用这个变量时必须每次都小心地重新读取这个变量的值,
  而不是使用保存在寄存器里的备份;
  例如,定义一个表示硬件寄存器数值的变量(如状态寄存器);
  定义一个在中断服务程序中会被访问到的变量;
  
  6、修改内存地址为0x00006666的整型变量的值为66?
  int *ptr = (int *)0x00006666;
  *ptr = 66;
  
  7、嵌入式系统总是要用户对变量或寄存器进行位操作,现给定一个整型变量a,
  请实现2个函数分别用于设置该变量的bit 3和清除该变量的bit 3,在以上两个操作中要保持其它位不变?
  #define BIT3 (0X1 << 3)
  static int a;
  void set_bit3(void){a |= BIT3;}
  void clear_bit3(void){a &= ~BIT3;}
  
  

本文源自微信公众号:嵌入式软件实战,不代表用户或本站观点,如有侵权,请联系nick.zong@aspencore.com 删除!