c++对const增强 和cosnt分配内存情况

const增强

  1. c语言中const是伪常量,可以通过指针修改

  2. c++中const会放到符号表中

  3. c语言中const默认是外部连接,c++中const默认是内部链接

     	  #include<iostream>    using namespace std;const int m_a = 10;  //在全局区域里,受到保护,不可以被更改  /*c语言中,const修饰的变量,是伪常量,编译器是会分配内存的、c++中,const不会分配内存,const int m_B=20;*/void test07(){//m_a = 100;   不允许被修改const int m_B = 20;//m_B = 100;	不允许被修改int *p = (int *)&m_B;//*p指向的是临时的那块空间,临时空间看不到,临时的空间被更改,但m_B没有被改*p = 200;printf("*p=%d,m_B=%d\n", *p, m_B);//c中*p 和m_B都是200//c++中m_B为20,没有被更改}
    int main(){test07();system("pause");}
    

const分配内存情况

  1. 对变量取地址,会分配临时内存

  2. extern关键字下的const会分配内存

  3. 用普通变量初始化cosnt变量

  4. 自定义数据类型会分配内存

     	#include<iostream>#include<string>using namespace std;//1.const分配内存,取地址会分配临时内存//2.extern 编译器也会给const 变量分配内存void test01(){const int m_A = 10;int *p = (int *)&m_A;//会分配临时内存}//3.用变量初始化const的变量void test02(){int a = 10;const int b = a;//会分配内存int *p = (int *)&b;*p = 1000;cout << "b= " << b << endl;}//4.自定义数据类型  加const也会分配内存struct Person{string m_Name; //姓名int m_Age;};void test03(){const Person p1;//p1 m_Name = "aaa";Person *p = (Person*)&p1;p->m_Name = "德玛西亚";(*p).m_Age = 18;cout << "姓名	" << p1.m_Name << "年龄		" << p1.m_Age << endl;}int main(){test03();system("pause");return 0;}
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/383336.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux下crontab命令的用法

任务调度的crond常驻命令 crond 是linux用来定期执行程序的命令。当安装完成操作系统之后&#xff0c;默认便会启动此任务调度命令。crond命令每分锺会定期检查是否有要执行的工作&#xff0c;如果有要执行的工作便会自动执行该工作。而linux任务调度的工作主要分为以下两类&am…

c++中引用的作用

引用的基本语法 用途起别名 Type &别名原名 引用必须初始化 一旦初始化后&#xff0c;不能修改 对数组建立引用 #include<iostream>using namespace std;//1.引用基本语法 Type &别名原名void test01(){int a 10;int &b a;cout << "a"…

LVM (Logic Volume Management,逻辑卷管理)

是传统商业Unix就带有的一项高级磁盘管理工具&#xff0c;异常强大。后来LVM移植到了Linux操作系统上&#xff0c;尽管不像原来Unix版本那么强大&#xff0c;但瘦死的骆驼比马大&#xff0c;Linux的LVM仍然非常强大&#xff0c;可以在生产运行系统上面直接在线扩展硬盘分区&…

cpu中的MMU的作用

虚拟内存与物理内存之间的映射 用户空间映射到物理内存是独立的&#xff0c;提高安全性修改内存访问级别 &#xff08;0是最高级&#xff09;

Linux命令行与Shell脚本编程大全读书笔记

Linux内核4大主要功能&#xff1a; 内存管理 进程管理 设备管理 文件系统管理 Linux系统启动的进程和脚本管理 1./etc/inittab 管理系统开机时会自动启动的进程 2./etc/init.d 管理开机时启动或停止某个应用的脚本放在这个目录下&#xff0c;/etc/rcX.d目录在启动时&…

拷贝构造函数的总结

构造函数的分类及调用 按照参数分类 1.无参构造&#xff08;默认构造&#xff09; 2.有参构造按照类型分类 1.普通构造函数2.拷贝构造函数无参构造写法和调用 Person p1; 注意不能写Person (),因为编译器认为这个是函数声明有参构造函数写法 和调用 Person p2(10) 或者Per…

技术与技巧札记

Linux常用命令及技巧&#xff1a; &#xff08;1&#xff09;cat /proc/version 查看当前内核的版本 (2) 挂载nfs文件夹&#xff1a;需要先确认在&#xff0f;etc&#xff0f;exports文件&#xff0c;可以用于开发板挂载的文件夹 mount -o nolock 10.0.22.30:/root/sharednfs …

c++中new的总结(动态管理,malloc存在的问题,malloc与new的区别)

c中使用malloc出现的问题 程序员必须确定对象的长度malloc 返回一个&#xff08;void *&#xff09;指针 &#xff0c;c不允许将&#xff08;void*) 赋值给其它指针&#xff0c;必须强转malloc可能申请内存失败&#xff0c;所以必须判断返回值来保存内存分配成功用户在使用对象…

Linux中变量#,@,0,1,2,*,$$,$?的含义

$# 是传给脚本的参数个数 $0 是脚本本身的名字 $1 是传递给该shell脚本的第一个参数 $2 是传递给该shell脚本的第二个参数 $ 是传给脚本的所有参数的列表 $* 是以一个单字符串显示所有向脚本传递的参数&#xff0c;与位置变量不同&#xff0c;参数可超过9个 $$ 是脚本运行的当前…

Volatile的陷阱

最近写的关于在嵌入式开发中常遇到的关于volatile关键字使用的短文&#xff0c;都是些通用的技术&#xff0c;贴上来share。 对于volatile关键字&#xff0c;大部分的C语言教材都是一笔带过&#xff0c;并没有做太过深入的分析&#xff0c;所以这里简单整理了一些关于volatile的…

c++中静态成员变量和静态成员函数

静态成员变量 在一个类中&#xff0c;若将一个成员变量声明为static,这种成员成为静态成员变量&#xff0c;与一般的数据成员不同&#xff0c;无论建立了多少个对象&#xff0c;都只想有一个静态数据的拷贝&#xff0c;静态成员变量&#xff0c;属于某个类&#xff0c;所有对象…

单列模式(饿汉)

单例模式案例 目的&#xff1a;为了让类中只有一个实例&#xff0c;实例不需要自己释放将 默认构造 和 拷贝构造 私有化内部维护一个 对象的指针私有化唯一指针对外提供getinstance方法来访问这个指针保证类中只能实例化唯一 一个对象 主席案例 #include<iostream>usin…

Makefile札记

Makefile中: ? 的区别 在Makefile中我们经常看到 : ? 这几个赋值运算符&#xff0c;那么他们有什么区别呢&#xff1f;我们来做个简单的实验 新建一个Makefile&#xff0c;内容为&#xff1a; ifdef DEFINE_VRE VRE “Hello World!” else endif ifeq ($(OPT),define) VRE…

c++中this指针基本概念和使用

class Person { public:int m_A;//非静态成员变量&#xff0c;属于对象上void func(/*Person * this*/){}; //非静态成员函数 不属于对象身上static int m_B;//静态成员函数&#xff0c;不属于对象上static void fun2(){};//静态成员函数 &#xff0c;不属于对象身上//double …

通用Makefile实现

Makefile是Linux下程序开发的自动化编译工具&#xff0c;一个好的Makefile应该准确的识别编译目标与源文件的依赖关系&#xff0c;并且有着高效的编译效率&#xff0c;即每次重新make时只需要处理那些修改过的文件即可。Makefile拥有很多复杂的功能&#xff0c;这里不可能也没必…

c++中空指针访问成员函数

如果成员函数没有用到this &#xff0c;那么空指针可以直接访问 如果成员函数用到this 指针&#xff0c;就要注意&#xff0c;要判断是否为空&#xff0c;防止程序崩溃 #include<iostream>using namespace std;class Person{public:void show(){//没有 用到this指针&am…

从0开始python学习-35.allure报告企业定制

目录 1. 搭建allure环境 2. 生成报告 3. logo定制 4. 企业级报告内容或层级定制 5. allure局域网查看 1. 搭建allure环境 1.1 JDK&#xff0c;使用PyCharm 找到pycharm安装目录找到java.exe记下jbr目录的完整路径&#xff0c;eg: C:\Program Files\JetBrains\PyCharm Com…

grep 常用命令

这个--include选项,可以这样使用: grep -rn --include*.c --include*.h re . 可以指定多次, 如果真是上面的这种情况, 其实可以用 grep -rn --include*.[ch] re . 但是, 如果源文件中含有C源代码,上面的方法就不凑效了, 因为[]中只能放一个字符. grep -rn --include*.{cp…

c++中友元函数详解

友元 友元分为&#xff1a;友元函数和友元类 友元提供了一种突破封装的方式&#xff0c;有时提供了便利。但是友元会增加耦合度&#xff0c;破坏了封装&#xff0c;所以友元不宜多 用。 全局函数做友元函数 全局函数写到类中做声明 并且最前面写关键字 friend 友元函数可访问…

Linux时间函数札记

关于gmtime、gmtime_r、localtime、localtime_r 测试环境&#xff1a;vmware 7 Redhat5.5&#xff0c;系统时间使用UTC&#xff0c;时区为上海。 1、函数功能介绍 使用man gmtime或man localtime都可以的得到这几个函数的介绍。原型如下&#xff1a; struct tm *gmtime(const …