C++说爱你不容易面试题-2
常考面试题
说说const和define的区别⭐⭐⭐⭐⭐
const用于定义常量;而define用于定义宏,而宏也可以用于定义常量。都用于常量定义时,它们的区别有:
- const生效于编译的阶段;define生效于预处理阶段。
- const定义的常量,在C语言中是存储在内存中、需要额外的内存空间的;define定义的常量,运行时是直接的操作数,并不会存放在内存中。
- const定义的常量是带类型的;define定义的常量不带类型。因此define定义的常量不利于类型检查。
说说const的作用⭐⭐⭐⭐⭐
const修饰普通类型的变量,告诉编译器某值是保持不变的。
const 修饰指针变量,根据const出现的位置和出现的次数分为三种
指向常量的指针:指针指向一个常量对象,目的是防止使用该指针来修改指向的值。
常指针:将指针本身声明为常量,这样可以防止改变指针指向的位置。
指向常量的常指针:一个常量指针指向一个常量对象。
const修饰参数传递,可以分为三种情况。
- 值传递的 const 修饰传递,一般这种情况不需要 const 修饰
- 当 const 参数为指针时,可以防止指针被意外篡改。
- 自定义类型的参数传递,需要临时对象复制参数,对于临时对象的构造,需要调用构造函数,比较浪费时间,因此我们采取 const 外加引用传递的方法。
const修饰函数返回值,分三种情况。
- const 修饰内置类型的返回值,修饰与不修饰返回值作用一样。
- const 修饰自定义类型的作为返回值,此时返回的值不能作为左值使用,既不能被赋值,也不能被修改。
- const 修饰返回的指针或者引用,是否返回一个指向 const 的指针,取决于我们想让用户干什么。
const修饰成员函数
const 修饰类成员函数,其目的是防止成员函数修改被调用对象的值,如果我们不想修改一个调用对象的值,所有的成员函数都应当声明为 const 成员函数。
const修饰函数的三个位置⭐⭐⭐⭐⭐
//修饰返回值 const int func(void); //修饰参数,说明不希望参数在函数体内被修改 int func(const int i); //修饰成员函数,其目的是防止成员函数修改被调用对象的值 int func(void) const;
说说
const int *a
,int const *a
,const int a
,int *const a
,const int *const a
分别是什么,有什么特点。⭐⭐⭐⭐⭐1. const int a;
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
校招面试考点全解析——C++软件与嵌入式篇(蒋豆芽的秋招打怪之旅) 文章被收录于专栏
<p> - 本专刊适合于C/C++已经入门的学生或人士,有一定的编程基础。 - 本专刊适合于互联网C++软件开发、嵌入式软件求职的学生或人士。 - 本专刊囊括了C语言、C++、操作系统、计算机网络、嵌入式、算法与数据结构等一系列知识点的讲解,并且最后总结出了高频面试考点(附有答案)共近400道,知识点讲解全面。不仅如此,教程还讲解了简历制作、笔试面试准备、面试技巧等内容。 </p> <p> <br /> </p>