C语言

C/C++面试常考关键字

时间:2025-03-09 15:02:43 C语言 我要投稿

C/C++面试常考关键字

  导语:结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。下面就由小编为大家介绍一下C/C++面试常考关键字,欢迎大家阅读!

C/C++面试常考关键字

  C/C++面试常考关键字总结:

  1.static关键字的作用?

  1)、static 申明的变量为静态全局变量,该变量存储在静态数据区,当整个程序结束时该变量才会被释放,只是生命周期延长,作用域不受影响。

  2)、static申明的变量定义时如果不初始化默认初始化为0

  3)、被static修饰的变量只能作用于本文件内,即使被extern修饰也不行

  2.const,define的区别

  1)、const修饰的变量为只读变量,定义一个const类型的变量时必须完成初始化

  2)、define意为宏定义一个常量,给某个命名变量宏定义一个确定的数值,在预编译期间将会完成一个替换的动作,用宏定义的值替换给变量名。

  3)、const也可以修饰函数的参数列表以及函数的返回值,参数返回值被const修饰代表参数和返回值均不能被改变。

  4)、const修饰的变量可以通过强制类型转换转为非const

  5)、const修饰的成员变量只能在构造函数的初始化列表进行初始化。并且不能修改

  6)、const修饰成员函数,该成员函数不能修改任何成员变量的值

  7)、const修饰对象:该对象中所有的成员都变成只读,而且该对象的所以成员函数都必须被const修饰。

  3.new/ ,malloc/free的区别

  (1)new/ malloc/free都是用来动态申请内存空间的 ,两组必须成对使用。

  (2)new/为运算符,malloc/free为库函数需要头文件

  (3)new/为对象申请释放内存会调用相应的构造函数和析构函数 malloc/free则不会

  (4)new有数据类型的检查,是类型安全的,malloc无数据类型的检查返回值为void*

  (5)new申请内存空间必须指明要存放的数据类型和要存放对象的数目,malloc只需要指明申请空间的大小,可以通过显示地强制类型转换改变返回值的数据类型

  4.auto(C++)

  auto申明的变量必须初始化,程序会根据初始化的值的数据类型来自动确定该变量的数据类型。

  5.指针和引用的区别

  (1)指针和引用都是通过地址索引数据的。

  (2)指针存放的是变量的地址,引用是变量的别名。

  (3)指针也是一个变量需要占用4个字节(32位机器)的内存空间,引用不需要占用内存,它只是变量的一个别名。

  5.面向对象和面向过程

  面向对象:面向主要是以目标对象为研究体,这一思想的实现需要对各种不同属性的类进行封装,进而分析每种类型事物的属性和功能方法,

  这种思想将计算机软件系统与外界系统一一对应,进行有针对性的研究。核心在于 (对象 + 消息)

  面向过程:C语言是面向过程的编程语言,这种思想主要是为了去实现某种功能或目标去一步步研究算法流程,步步求精,

  进而用一种最为简捷的过程来实现最终的目标,核心为 (算法+数据)

  6. static修饰类的成员变量和成员函数

  (1)static修饰的成员变量属于这个类,不属于某个对象。

  (2)static修饰的成员变量需要在类外进行初始化。

  (3)static修饰的成员函数只能访问static修饰的成员变量,不能访问普通成员变量。

  (4)static修饰的成员函数没有this指针。

  (5)基类static修饰的成员变量继承给子类也只存在一份,基类和派生类共享该成员。

  (6)类内部可以定义静态的类对象成员,即 可以定义static修饰的类对象

  // public:static base A; (正确) public: base A; (错误)

  7.mutable关键字

  被mutable修饰的成员变量,是可变的,可以修改的,即使某个对象是const类型,该成员变量也可以被修改。在被const修饰的成员函数中该变量也可以被修改。

  8.explicit:

  只能修饰构造函数,防止单参数的构造函数隐式类型转换,把一个常量转换成一个对象。

  在没有加explicit之前,可以把一个常量赋给一个对象。

  推荐构造函数前最好加explict

  9.volitile:

  该关键字意思为易变的,因为有些时候某个变量容易被改变,所以我们需要读取当前该变量最新的数据,不需要编译器做优化处理。

  主要用于多线程中。volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现读取数据不一致的现象。

【C/C++面试常考关键字】相关文章:

C/C++面试常考关键字总结10-29

c++中const关键字11-03

register关键字在c语言和c++中的差异09-23

C/C++内存管理09-20

Java与C/C++的区别06-18

C/C++函数调用的方式07-29

C语言和C++的分别06-18

C和C++的关系解说10-12

C语言和C++的区别09-19