搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
花生_TL007
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
华为OD机试 - 按身高和体重排队(Python)_华为机考按身高和体重排队
2
HttpServletRequest/Response
3
解决vscode中git push/pull需要输入用户名和密码的问题_git push 参数输入密码
4
数据库选择题_被定义为not null的列不可以被更新为null
5
网络工程师教程(第三部)_活动目录工作组分类
6
对于windows安装fabric的安装步骤_setupssh381-20040709.zip
7
AI之Devin:Devin(被称为第一个完全自主的AI软件工程师)的简介、技术报告解读、使用方法之详细攻略_devin使用
8
终端安全管理软件是监控软件吗_安全终端防护软件是用来监控上网不
9
Python基础(5)-Pandas_python pandas
10
自动生成logo的网址
当前位置:
article
> 正文
C语言——#define与const的区别
作者:花生_TL007 | 2024-04-10 18:45:15
赞
踩
C语言——#define与const的区别
C语言——#define与const的区别
define与const都与常量有关。define是
宏定义
,它可以把一个标识符变成一个常量,而const是一个修饰符,它可以修饰一个变量为常类型,使其不可被修改。
本质上两者不同,define修饰出来的是常量。并且是真常量。
而const修饰的是假常量,它本质还是变量,只不过是不能修改值。
为什么说define修饰出来的是真常量呢?因为,define是宏定义,是宏替换!意味着程序在编译前期会进行文本替换,例如代码define PI 3.14,编译器会将代码中所有出现PI的地方全部用3.14替换,然后在进行编译,所以本质它就是一个常量!
至于const,const一般修饰于定义变量的前面,比如const int a=10,意味着a就一直是10,是一个不可修改的变量。
往后视图给a重新赋值都会引发错误。这就是const修饰之后的结果,但请注意这里不可修改的原因其实是编译器在做检查,检查是否有修改这块内存上的值,一旦有就会报错!所以从根本上说,const修饰的变量依然是一个变量!只不过编译器不让修改而已!
两者的区别
编译器处理方式不同
define 宏是在预处理阶段展开。
const 是编译运行阶段使用。
类型和安全检查不同
define 宏没有类型,不做任何类型检查,仅仅是展开。
const 有具体的类型,在编译阶段会执行类型检查。
存储方式不同
define 宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存(宏定义不分配内存,变量定义分配内存)。
const 会在内存中分配(可以是堆中也可以是栈中)
const可以节省空间,避免不必要的内存分配。
const 定义常变量从汇编的角度来看,只是给出了对应的内存地址,而不是像define一样给出的是立即数,所以,const定义的常变量在程序运行过程中只有一份拷贝(因为是全局的只读变量,存在静态存储区),而define定义的常变量在内存中有若干个拷贝。
编译器通常不为普通const常变量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很好。
宏替换只做替换,不做计算,不做表达式求解。
宏预编译时就替换了,程序运行时,并不分配内存。
总结
类别
define
const
何时处理
编译期间进行宏替换
编译期间检查是否有修改
谁来执行
由系统判断是否被修改
由编译器限制
存储位置
数据常量在内存只读区
变量在哪里就在哪里
声明:
本文内容由网友自发贡献,转载请注明出处:
【wpsshop博客】
推荐阅读
article
计算机
毕业设计
参考文献
...
每当毕业论文写到最后需要
参考文献
时,往往是很令人头疼的,因为有的老师对
参考文献
的要求是很多的,比如需要国内的和国外的,时...
赞
踩
article
【
MacOS
】MacBook使用本机m1
芯片
GPU
训练的方法(
mps
替代
cuda
)_
mac
mps
...
使用Mac M1
芯片
加速 pytorch 不需要安装
cuda
后端,因为
cuda
是适配nvidia的
GPU
的,Mac M...
赞
踩
article
2024年最新!
CleanMy
Mac
X v4.15.0 中文
破解版
Mac
优化
清理
工具_maca...
CleanMy
Mac
一款macOS上非常经典的
清理
工具。
清理
您的系统来获得最大的性能和释放自由空间。移除照片图库中的支持...
赞
踩
article
【
系统
分析师
之
路】
第十一章
新
技术
应用
_水平
重用
垂直
重用
...
【
系统
分析师
之
路】
第十一章
新
技术
应用
_水平
重用
垂直
重用
水平
重用
垂直
重用
【
系统
分析师
之
路】...
赞
踩
article
AutoCAD
各版本
下载
地址
_
cad2018
阿里网盘...
AutoCAD
各版本
下载
地址
_
cad2018
阿里网盘
cad2018
阿里网盘
AutoCAD
202...
赞
踩
article
来自腾讯AI实验室的
Real
-
ESRGAN
将模糊
老照片
和视频
修复
成
高清晰
(一些
错误处理
)...
老旧照片
修复
成
高清晰
照片,视频也可以,一起来体验下
Real
-
ESRGAN
_real-esrganreal-esrgan ...
赞
踩
article
Arduino
手动添加
ESP32
相关
开发板
(图文并茂)_
arduino
安装
esp32
开发板
...
一、前述 使用
Arduino
开发
ESP32
,就绕不开添加
ESP32
开发板
这一步,网上有很多
相关
教程,介绍的很详细,但是...
赞
踩
article
二分法
(
蓝桥
杯
Python
组
)...
二分法
(Binary Search)主要用于在有序数
组
中搜索恰好满足某一边界条件的元素。如果题目所求的答案具有是或者不是...
赞
踩
article
中国
石油大学
华东
c
语言
题库_
中国
石油大学
(
华东
)2020年硕士研究生招生考试大纲
...
...
211翻译硕士英语.pdf212 翻译硕士俄语.pdf242 俄语(二外).pdf243 日语(二外).pdf244 德...
赞
踩
article
数据库
06
-
03
时间
戳,多
版本
MVCC
,快照隔离,幻读...
定义。
数据库
06
-
03
时间
戳,多
版本
MVCC
,快照隔离,幻读 ...
赞
踩
article
RabbitMQ
之
延迟
队列
_
rabbitmq
延迟
队列
插件...
介绍了
RabbitMQ
的
延迟
队列
_
rabbitmq
延迟
队列
插件
rabbitmq
延迟
队列
插件 &n...
赞
踩
article
使用
Python
Selenium
自动购买
Interpark
演唱会
门票_
interpark
自动...
Interpark
是韩国的一家知名网上购物网站,成立于1996年。它是韩国最早开展网上零售业务的公司之一,提供各种产品,...
赞
踩
article
建立
rsyslog
日志
服务器
_
rsyslog
配置
日志
服务器
...
文章目录1.
rsyslog
介绍2. 实验目的3. 实验环境4. 配置服务端5. 配置客户端6. 在服务端验证效果1....
赞
踩
article
【教程】安卓设备使用
AidLux
部署高
版本
HomeAssistant
(2023.2及以上)及
安装
HA...
由于
AidLux
应用商店提供的Python
版本
最高只支持到3.9,对
HomeAssistant
的支持只到2023.1
版本
...
赞
踩
article
MySql
表结构
迁移
到
PostgreSql
(
pgsql
) 方案_
mysql
迁移
到
postgre
...
。_
mysql
迁移
到
postgre
mysql
迁移
到
postgre
由于工作需要,要将原有的mys...
赞
踩
article
设计
一个小型
的
物
联网
应用
系统_点赞 | 面向能源物
联网
的
智能
传感
芯片
设计
与
应用
......
项目名称:面向能源物
联网
的
智能
传感
芯片
设计
与
应用
申报单位:超大规模集成电路研究所负 责 人:虞小鹏、唐中1项目简介 针对...
赞
踩
article
MySQL
小技巧:恢复
误删除
的
表
...
每天 2:30 做完全备份,早上 10:00
误删除
了
表
students,10:10 才发现故障。现需要将数据库还原...
赞
踩
article
python
抢票
软件源
代码
_
一百多
行
python
代码
实现
抢票
助手...
一百多
行
python
代码
实现
抢票
助手来源:中文源码网浏览: 次日期:2019年11月5日【下载文档:
一百多
行
python
...
赞
踩
article
Chatgpt
掘金之旅—有爱
AI
商业
实战篇
|
社交
媒体
管理|(七)...
演示站点:https://ai.uaai.cn 对话模块|-官方论坛: www.jingyuai.com |京娱
AI
|-...
赞
踩
article
linux
开机
自动
执行命令或
自动
启动程序(
rc
.
local
)_
rc
.
local
开机自启动
sh
...
linux
开机的最后会执行/etc/
rc
.
local
,因此可以在此脚本里面添加
sh
ell命令
自动
执行或者
自动
启动某个进程...
赞
踩
相关标签
macos
深度学习
pytorch
tensorflow
CleanMyMac
CleanMyMacx
电脑
软考系分
系统分析师之路
软件需求
Real-ESRGAN
老照片AI修复
模糊照片生成高清晰
torch.cuda
pytorch-cuda
经验分享
蓝桥杯
python
职场和发展
学习
笔记
算法
中国石油大学华东c语言题库
数据库