首页 > 编程语言 >C++ const的理解

C++ const的理解

时间:2023-03-18 13:22:21浏览次数:37  
标签:初始化 20 int 30 C++ 理解 printf const

const

​ const修饰的变量不能再作为左值,初始化后值不能被修改

C和C++const的区别

​ C语言中const修饰的值是常变量,不是常量,只是不能作为左值被修改

void main ()
{
    const int a = 20;
    int array[a] = {}; //错误
    int * p = (int*)&a;
    *p = 30;
    //30 30 30,可以通过指针修改值
    printf("%d %d %d",a,*p,*(&a) ); 
}

​C++ const用立即数初始化叫常量,必须初始化,所有出现常量名字的地方都在编译阶段被常量的初始化值替换;若用另一个const初始化则叫常变量与C中相同

int main ()
{
    const int a = 20;
    int * p = (int*)&a;
    *p = 30; //把a内存对应的值改为30
     //20 30 20
    printf("%d %d %d",a,*p,*(&a) ); //-> printf("%d %d %d",20,*p,20);
}

int main ()
{
    int b = 20;
    const int a = b; //这样就退化成了常变量和C中一样
    int array[a] = {}; //错误
    int * p = (int*)&a;
    *p = 30; 
     //30 30 30
    printf("%d %d %d",a,*p,*(&a) ); 
}

标签:初始化,20,int,30,C++,理解,printf,const
From: https://www.cnblogs.com/KongJiBlogs/p/17229802.html

相关文章

  • 周六900C++模拟测试2023.3.18
     2023江南万达校区能力测试说明:1、在桌面以自己名字命名(中文名)建立文件夹;2、文件夹中存储每个题目对应的英文题目名.cpp文件; 中文题目名称小L的能量检测......
  • 关于java stream流中的peek方法和foreach的自我理解:
    场景:我需要在数据库中将信息查出,在将其转化为某一个对象,再将该对象进行添加进入list集合 我首先想到的是stream().peek()方法,编写的代码如下:productAtt......
  • 第十三届蓝桥杯国赛 C++ B 组 J 题——搬砖(AC)
    目录​​1.搬砖​​​​1.题目描述​​​​2.输入格式​​​​3.输出格式​​​​4.样例输入​​​​5.样例输出​​​​6.数据范围​​​​7.原题链接​​​​2.解题思路​......
  • C++ STL 容器的size_type
    在C++STL容器中,size_type是一个无符号整数类型,用于表示容器中元素的数量或大小。由于不同平台和编译器有不同的实现,因此使用size_type可以确保代码的可移植性和兼容......
  • C++ mutex lock,unlock
    #model/util.h#pragmaonce#include<chrono>#include<ctime>#include<fstream>#include<functional>#include<iomanip>#include<iostream>#include<list>......
  • C++指针总结
    在程序运行时分配的内存空间是需要在运行中释放的,这部分内存称之为堆。智能指针不用自己释放内存,只要没有指针指向内存了,就会自动释放。下面是两种智能指针:shared_ptr允......
  • c++ mutex operations try_lock,un_lock
    //model/util.h#pragmaonce#include<chrono>#include<ctime>#include<fstream>#include<functional>#include<iomanip>#include<iostream>#include<list>......
  • HTTPS原理解析
    我们用https的目的是什么?为了A端与B端互发的消息就算被拦截获取到也是加密了无法查看的,通用的加密/解密过程如下:以上的过程分析如下:1A端传入加密串"xx"进A端的加密方......
  • 深入理解Display类的使用
     熟悉了MIDlet类的使用以后,下面来熟悉一下Display类的使用,这个类也是进行J2ME编程中经常要使用到的类之一。      Display类有两个最主要的作用:1、 获得屏幕的属......
  • 对find,xargs,grep和管道的一些深入理解
    转载:http://fatmouse.xyz/2016/05/10/2016-05-10-find-grep-xargs-and-pipe/1、参数与标准输入这两个词我们在Linux命令中是很常见的。但是参数和标准输入其实是有区别......