1. 说说内联函数和宏函数的区别⭐⭐⭐⭐⭐

  2. 什么是字节对齐?为什么要字节对齐?⭐⭐⭐⭐⭐

  3. 说说内联函数和函数的区别,内联函数的作用。⭐⭐⭐⭐⭐

  4. 说说const和define的区别⭐⭐⭐⭐⭐

  5. 说说const的作用⭐⭐⭐⭐⭐

  6. const修饰函数的三个位置⭐⭐⭐⭐⭐

  7. 说说const int *a, int const *a, const int a, int *const a, const int *const a分别是什么,有什么特点。⭐⭐⭐⭐⭐

  8. 说说静态局部变量,全局变量,局部变量的特点,以及使用场景⭐⭐⭐⭐

=========================================================================================================

  • 本专栏适合于C/C++已经入门的学生或人士,有一定的编程基础。
  • 本专栏适合于互联网C++软件开发、嵌入式软件求职的学生或人士。
  • 本专栏针对面试题答案进行了优化,尽量做到好记、言简意赅。这才是一份面试题总结的正确打开方式。这样才方便背诵
  • 针对于非科班同学,建议学习本人专刊文章《蒋豆芽的秋招打怪之旅》,该专刊文章对每一个知识点进行了详细解析。
  • 如专栏内容有错漏,欢迎在评论区指出或私聊我更改,一起学习,共同进步。
  • 相信大家都有着高尚的灵魂,请尊重我的知识产权,未经允许严禁各类机构和个人转载、传阅本专栏的内容。

=========================================================================================================

  1. 说说内联函数和宏函数的区别⭐⭐⭐⭐⭐

    1. 宏定义不是函数,但是使用起来像函数。预处理器用复制宏代码的方式代替函数的调用,省去了函数压栈退栈过程,提高了效率;而内联函数本质上是一个函数,内联函数一般用于函数体的代码比较简单的函数,不能包含复杂的控制语句,while、switch,并且内联函数本身不能直接调用自身。
    2. 宏函数是在预编译的时候把所有的宏名用宏体来替换,简单的说就是字符串替换 ;而内联函数则是在编译的时候进行代码插入,编译器会在每处调用内联函数的地方直接把内联函数的内容展开,这样可以省去函数的调用的开销,提高效率
    3. 宏定义是没有类型检查的,无论对还是错都是直接替换;而内联函数在编译的时候会进行类型的检查,内联函数满足函数的性质,比如有返回值、参数列表等
  2. 什么是字节对齐?为什么要字节对齐?⭐⭐⭐⭐⭐

    1. 为了使CPU能够对变量进行快速的访问,变量的起始地址应该具有某些特性,即所谓的“对齐”,比如4字节的int型,其起始地址应该位于4字节的边界上,即起始地址能够被4整除,也即“对齐”跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐

    2. 为什么要字节对齐?

      (1)需要字节对齐的根本原因在于CPU访问数据的效率问题

      (2)一些系统对对齐要求非常严格,比如sparc系统,如果取未对齐的数据会发生错误,而在x86上就不会出现错误,只是效率下降。