首页 > 试题广场 >

下面关于c++中const和define的说法错误的是()

[单选题]
下面关于c++中const和define的说法错误的是()
  • define宏在预处理阶段展开,const变量是编译运行阶段使用
  • 在编译阶段会对define宏和const常量做类型安全检查
  • const可以节省空间,避免不必要的内存分配
  • define宏在定义的时候不会分配内存

<p>编译器不为const分配内存空间,而是直接保存在符号表中,没有了内存读取操作,效率就提高了。编译器会对const进行安全类型检查,define由于没有类型所以无法进行类型检查</p>

编辑于 2020-08-03 14:23:48 回复(0)
#define在预处理阶段替换,使用该常量的都要拷贝,没有类型安全检查,所以在字符替换的时候可能会出现边际效应。而const定义的常量有类型名,放在静态区,在编译期,只有一个拷贝,节省内部空间和内存读取。so,选B
发表于 2020-09-09 11:08:01 回复(0)
宏定义是字符替换,没有数据类型的区别,同时这种替换没有类型安全检查,可能产生边际效应等错误;
const常量是常量的声明,有类型区别,需要在编译阶段进行类型检查。
发表于 2020-11-14 14:34:43 回复(0)
所以在字符替换的时候可能会出现边际效应。而const定义的常量有类型名,放在静态区,在编译期,只有一个拷贝,节省内部空间和内存读取。
发表于 2022-03-28 22:54:42 回复(0)

A. 正确。define是预处理器宏,在编译阶段之前进行处理,一般用于实现简单的文本替换。而const变量是在程序运行期间使用的,因此它们的生命周期和作用域是不同的。

B. 错误。在编译阶段,define宏不会进行类型安全检查,它只是简单的文本替换,没有分配内存空间。而const常量在编译时会被分配内存空间,并具有确定的数据类型。

C. 正确。由于const常量在编译时被分配内存,因此可以避免在程序运行期间进行不必要的内存分配,从而节省空间。

D. 正确。define宏在定义的时候只是进行文本替换,不会分配内存空间。

发表于 2023-11-29 22:39:39 回复(0)
Define宏是没有数据类型
发表于 2021-06-30 08:42:50 回复(0)
C
const 只是表示变量‘不可修改’,并没有节省内存功效啊。
const object *p = new object() ;
object *p1 = new object() ;
p 和 p1需要的内存是一样的。

发表于 2020-08-03 17:00:27 回复(1)