c++ 学习 之 const,constexpr,volatile

这篇具有很好参考价值的文章主要介绍了c++ 学习 之 const,constexpr,volatile。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

const、constexpr 和 volatile 是 C++ 中用于修饰变量和类型的关键字

正文

它们分别用于不同的用途:

const(常量):
const 用于声明常量,表示变量的值不能被修改。
它可以应用于变量、指针、引用、成员函数以及类对象。
常量变量必须在声明时初始化。
常量成员函数承诺不修改对象的状态。
常量指针和常量引用可以用于传递参数,以确保函数不会修改传入的值。
示例:

const int x = 5; // 声明一个常量整数
const double PI = 3.14159; // 声明一个常量双精度浮点数

void foo(const int& val) {
    // val 是一个常量引用,不能在函数中修改它
}

constexpr(常量表达式):
constexpr 用于声明常量表达式,它在编译时求值。
constexpr 变量必须在声明时用常量表达式初始化,可以用于编译时计算。
constexpr 函数可以在编译时计算,用于生成编译期常量。
constexpr 可以提高性能,因为编译器可以在编译时执行计算,而不需要在运行时进行计算。
示例:

constexpr int square(int x) {
    return x * x;
}

constexpr int result = square(5); // 编译时计算

const int size = 10;
int arr[size]; // 使用 const 常量来定义数组大小

volatile(易失性):
volatile 用于告诉编译器,变量的值可能在程序的执行中被外部因素修改,因此不应进行优化。
通常用于描述硬件寄存器、多线程编程中的共享变量等。
volatile 可以防止编译器对变量的读取和写入操作进行优化,以确保每次访问都是真实的。
示例:

volatile int sensorValue; // 用于描述外部传感器值

void readSensor() {
    sensorValue = /* 从传感器读取值 */;
}

int main() {
    while (true) {
        readSensor();
        // 使用 sensorValue 进行操作,编译器不会优化读取操作
    }
}

总之,const 用于声明常量,constexpr 用于声明编译时常量,而 volatile 用于告诉编译器变量的值可能会在外部因素的影响下发生变化。这些关键字在 C++ 中有不同的用途,根据具体需求来选择使用。文章来源地址https://www.toymoban.com/news/detail-698837.html

到了这里,关于c++ 学习 之 const,constexpr,volatile的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32编程中的volatile,const意义

    __I、 __O 、__IO是什么意思? 这是ST库里面的宏定义,定义如下: #define __I volatile const /*! defines \\\'read only\\\' permissions */ #define __O volatile /*! defines ‘write only’ permissions / #define __IO volatile /! defines ‘read / write’ permissions */ 显然,这三个宏定义都是用来替换成 volatile 和 const 的,所以

    2024年02月15日
    浏览(42)
  • static,const,volatile,extern,register关键字深入解析

    ✅作者简介:嵌入式入坑者,与大家一起加油,希望文章能够帮助各位!!!! 📃个人主页:@rivencode的个人主页 🔥系列专栏:玩转C语言 💬保持学习、保持热爱、认真分享、一起进步!! 我们都知道一个源文件要生成我们计算机课执行的文件要经过: 源文件(test.c)—预编

    2023年04月08日
    浏览(26)
  • C语言中volatile/register/const/static/extern/auto关键字的作用

    目录 一、volatile 二、register详解 三、const详解 四、static详解 五、extern详解 语法 作用 六、auto详解 突然想总结一下这些的作用,灵活使用这些对程序的可靠性和速率都有提高 volatile是防止编译器优化,如果是高频繁的变量编译器会自动将变量放到寄存器中,但是有的变

    2024年02月07日
    浏览(56)
  • 【C++学习手札】-引用与内联函数以及C++中对const拓展详解(超详细!)

                                           食用指南:本文在有C基础的情况下食用更佳                                        🔥 这就不得不推荐此专栏了:C语言                                        🍀 内联函数前置知识 :宏函数

    2024年02月14日
    浏览(27)
  • C++(20):constexpr函数中可以成对的使用new/delete

    C++20前,constexpr函数中是不能使用new和delete的。 C++20进一步的放宽了限制,允许成对的使用new和delete。

    2024年02月08日
    浏览(29)
  • 【C++】中类的6个默认成员函数 取地址及const成员函数 && 学习运算符重载 && 【实现一个日期类】

    1.1 运算符重载【引入】 C++为了增强代码的可读性引入了 运算符重载 ,运算符重载是具有特殊函数名的函数,也具有其返回值类型,函数名字以及参数列表,其返回值类型与参数列表与普通的函数类似。 函数名字为: operator后面接需要重载的运算符符号。 函数原型:

    2024年02月21日
    浏览(38)
  • C++中的volatile

    volatile的本意是“ 易变的 ”,是一种 类型修饰符 ,用它声明的类型变量 表示可以被某些编译器未知的因素更改 ,比如操作系统、硬件或者其它线程等。遇到这个声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。 当要求

    2024年02月09日
    浏览(74)
  • C++的volatile

    在C++中,编译器为了提高代码的执行效率,常常会对变量进行反向优化,比如将变量缓存在寄存器中,这样可以减少对内存的访问次数,提高访问速度。然而,在某些情况下,我们希望确保每次访问变量时都能从内存中读取最新值,而不是使用缓存中的旧值。 volatile用

    2024年02月16日
    浏览(40)
  • C++中const char*、char const*和char * const的区别详解

       1、const char* p: 2、char const*:  等价于const char*; 用法如上,这里不过多解释  3、char * const: 4、const char * const p = str 等价于 char const * const p=str     p的指向不能改变,p指向的内容也不能被改变; 5、 补充:

    2024年02月04日
    浏览(30)
  • C++中volatile的具体含义和可能得坑

      似乎很多人不理解voliate和atomic啥区别,本文主要主要描述volatile的作用和使用场景。对比了atomic和volatile的区别,以及性能差异。最后补充了几条可能导致C++代码测试volatile导致正确结果错误结论的依据。   Every access (read or write operation, member function call, etc.) made through

    2024年01月22日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包