0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

const定义的是不是常量

学益得智能硬件 来源:学益得智能硬件 2025-01-14 11:35 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

C语言是如何定义常量的?const定义的算不算是常量?

常见的有这么几种方式。

首先就是宏定义,使用 define 来定义。

宏的特点就是在预处理的时候被替换,比如这个地方的 SIZE,预处理后就会变成数字 5。

第二种跟宏定义类似,常量也可以在编译的时候通过编译器传入。

以 gcc 为例,编译的时候提供 -D 选项,同样会在预处理的时候替换成相应的数字。

第三种枚举,使用 enum 关键字。

枚举的特点是默认从 0 开始,逐渐递增。如果需要大量含义相同的常量,可以考虑使用枚举。

下面要说的就是 const,定义数组的时候,如果数组的长度仅仅用 const 来修饰,在编译的时候就会提示错误。

const修饰的不是常量,属于只读变量,这一点在《C专家编程》中也有描述。在一个符号前面加上 const 限定符只是表示这个符号不能被赋值。

为了解决这个问题,C23专门引入了新的关键字 constexpr,用 constexpr 修饰的才是真正的常量,不管是用它定义数组长度,还是给枚举赋值都可以。这是个正儿八经的常量。

除了上面几种,代码中常见的还有字符串常量,比如这样的,"helloworld"属于字符串常量,在代码运行过程中不能修改。

还有没有其他定义常量的方法,如果有遗漏,欢迎大家在评论区补充。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    183

    文章

    7646

    浏览量

    146169
  • CONST
    +关注

    关注

    0

    文章

    45

    浏览量

    8822

原文标题:const定义的是不是常量

文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CW32F030是不是支持keil?

    各位大佬,请问CW32F030是不是支持keil 啊?
    发表于 01-19 07:02

    瑞萨RA系列FSP库开发实战指南之定义传输源和目标存储器

    数组由于有const声明为常量,因此其数据存储在内部Flash 中,DST_Buffer为普通的全局变量,其数据存储在RAM中。这两个数组的大小由宏定义BUFFER_SIZE来决定。
    的头像 发表于 12-15 11:09 4385次阅读
    瑞萨RA系列FSP库开发实战指南之<b class='flag-5'>定义</b>传输源和目标存储器

    请问CW32L的UART是不是没有空闲中断?

    CW32L083的UART是不是没有空闲中断?大家一般怎么实现不定长数据接收?是串口中断+定时器吗?
    发表于 12-15 07:28

    请问使用ChirpIoT 是不是可以实现mesh组网?

    使用ChirpIoT 是不是可以实现mesh组网?
    发表于 12-11 06:58

    cw32L系列是不是用不了JTAG?只是用SWD接口?

    cw32L系列是不是用不了JTAG?只是用SWD接口?
    发表于 12-08 06:21

    请问CW32系列芯片是不是没有带网口的型号?

    CW32系列芯片是不是没有带网口的型号?
    发表于 12-05 06:52

    想用DMA+uart同时访问串口2和3是不是不可以?

    想用DMA+uart同时访问串口2和3是不是不可以?
    发表于 12-05 06:19

    鸿蒙系统对手机市场会产生怎样的影响?现在汽车是不是也用上鸿蒙系统了?

    鸿蒙系统对手机市场会产生怎样的影响?现在汽车是不是也用上鸿蒙系统了?
    发表于 12-04 20:47

    请问IR 调制器是不是复用串口的啊?

    请问,IR 调制器是不是复用串口的啊?
    发表于 11-26 06:36

    C语言的常量介绍

    定义,其一般形式为 #define 标识符 常量值 #include #define POCKETMONEY 10 //定义常量常量
    发表于 11-24 07:12

    芯源MCU架构是不是基本都是ARM架构?还有其他的架构吗?

    芯源MCU架构是不是基本都是ARM架构?还有其他的架构吗?
    发表于 11-20 06:21

    芯源的MCU是不是基本都是宽压输入?宽电压对整体功耗有影响吗?

    关于芯源电源电压问题,芯源的MCU是不是基本都是宽压输入?宽电压对整体功耗有影响吗?
    发表于 11-18 07:26

    对于没有bsp包,也没有芯片创建的功能是不是就不能用rtthread?

    公司用的冷门芯片,不能生成BSP包,然后发现芯片创建也没有,是不是不能用rtthreead了?
    发表于 09-23 08:27

    请问STM32的内部Flash操作是不是优先级最高?

    STM32的内部Flash操作是不是优先级最高?目前在内部Flash的单独一页存储了数据,发现在进行页擦除的时候正常工作的定时器中断无法进入了
    发表于 08-13 07:03

    光纤跳线是不是就是尾纤

    光纤跳线和尾纤不是同一种东西,它们在多个方面存在明显区别: 定义与用途 光纤跳线 定义:光纤跳线也叫光纤连接器,是两端都带有连接器的光纤线缆,用于连接设备与设备、设备与光纤配线架等,实现光信号的传输
    的头像 发表于 06-18 09:58 1368次阅读