栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++常量折叠

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++常量折叠

常量折叠
  • const关键字修饰的变量被称为常量
  • 在编译过程中,计算出常量表达式的值,并保存在常量表中,引用处替换成常量的值。以期优化编译速度。
#include
#include

using namespace std;

int main()
{
    const int a = 1;
    int * p = (int *)&a;

    *p = 2;

    cout << "P is:" << *p << "tA is :" << a << endl;
    cout << "P's address is:" << p << "tA's address is :" << &a << endl;


    int b = 1;
    int * q = &b;

    *q = 2;

    cout << "Q is:" << *q << "tB is :" << b << endl;
    cout << "Q's address is:" << q << "tB's address is :" << &b << endl;

    return 0;
}


  • 输出:
P is:2  A is :1
P's address is:0x61feb4 A's address is :0x61feb4
Q is:2  B is :2
Q's address is:0x61feb0 B's address is :0x61feb0

  • 从上面代码可以看出:
  • p 和 a 指向同一块内存,但是值却不一样,原因就是 a 作为常量在编译过程中就被替换成了 1,p指向的地址虽然改变了,编译过程中已经变成了 1 这个常数。所以打印的 a 值就是1。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/980241.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号