- 编译器处理方式不同:
#define
宏是在预处理阶段展开,不能对宏定义进行调试,而const
常量是在编译阶段使用; - 类型和安全检查不同:
#define
宏没有类型,不做任何类型检查,仅仅是代码展开,可能产生边际效应等错误,而const
常量有具体类型,在编译阶段会执行类型检查; - 存储方式不同:
#define
宏仅仅是代码展开,在多个地方进行字符串替换,不会分配内存,存储于程序的代码段中,而const
常量会分配内存,但只维持一份拷贝,存储于程序的数据段中。 - 定义域不同:
#define
宏不受定义域限制,而const
常量只在定义域内有效。
- 当前位置:
- 首页
- C++
- C++基础
- 正文
#define和const有什么区别?
C++基础
5
18.8K
帅地管理员
上一篇
static关键字有什么作用?
下一篇
静态链接和动态链接有什么区别?
C++基础笔记
1. C和C++有什么区别?
2. a和&a有什么区别?
3. static关键字有什么作用?
5. 静态链接和动态链接有什么区别?
6. 变量的声明和定义有什么区别
7. 简述#ifdef、#else、#endif和#ifndef的作用
8. 写出int 、bool、 float 、指针变量与 “零值”比较的if 语句
9. 结构体可以直接赋值吗
10. sizeof 和strlen 的区别
11. C 语言的关键字 static 和 C++ 的关键字 static 有什么区别
12. volatile有什么作用
13. 一个参数可以既是const又是volatile吗
14. 全局变量和局部变量有什么区别?操作系统和编译器是怎么知道的?
15. 简述strcpy、sprintf 与memcpy 的区别
16. 对于一个频繁使用的短小函数,应该使用什么来实现?有什么优缺点?
17. 什么是智能指针?智能指针有什么作用?分为哪几种?各自有什么样的特点?
18. shared_ptr是如何实现的?
19. 右值引用有什么作用?
20. 悬挂指针与野指针有什么区别?
21. 请解析((void ()( ) )0)( )的含义
22. 指针和引用的区别
23. typedef 和define 有什么区别
24. 简述队列和栈的异同
25. 设置地址为0x67a9 的整型变量的值为0xaa66
26. 结构体和类的区别
27. 简述指针常量与常量指针的区别
28. 如何避免“野指针”
29. 句柄和指针的区别和联系是什么?
30. 说一说extern“C”
31. 对c++中的smart pointer四个智能指针:shared_ptr,unique_ptr,weak_ptr,auto_ptr的理解
32. C++的顶层const和底层const ?
33. 拷贝初始化和直接初始化,初始化和赋值的区别?
标签云
C++STL面试题 (62)
C++基础 (34)
C++基础面试题 (31)
C++面向对象面试题 (30)
CSS面试题 (71)
Dubbo面试题 (34)
Elasticsearch面试题 (35)
Go面试题 (65)
HTML面试题 (59)
JavaScrip面试题 (84)
JavaWeb面试题 (39)
Java虚拟机 (43)
Java锁 (44)
Java面试题 (45)
Kafka面试题 (46)
Linux命令 (55)
Linux面试题 (34)
MongoDB面试题 (45)
MySQL面试题 (45)
Netty面试题 (36)
Nginx面试题 (49)
Python后台开发 (45)
Python基础 (41)
Python机器学习 (33)
Python爬虫 (36)
Python进阶 (49)
RabbitMQ面试题 (43)
Redis (51)
RocketMQ面试题 (39)
Shopee面试 (31)
Spring Boot基础 (41)
Spring Cloud面试题 (56)
Tomcat面试题 (39)
Vue面试题 (53)
前端开发岗 (52)
字节跳动面试 (56)
客户端开发岗 (51)
操作系统面试题 (34)
滴滴面试 (31)
网络编程 (36)
腾讯面经 (41)
腾讯面试 (52)
计算机网络 (29)
计算机网络面试题 (49)
阿里巴巴面试 (56)