Static、#define、const、mutable、typedef

news2024/10/7 14:22:51

Static、#define、const、mutable、typedef

代码存储区域:常量区、代码区、静态区(全局区)、堆区、栈区

栈区向下增长,堆区向上增长。栈由系统管理,没有内存碎片,每个元素之间都是连续的,大小比较小,8k,可以修改系统参数,堆区存储动态开辟的变量。

还有一个内核空间,但是它不与用户直接交互(内核区)。

C++内存空间

static

修饰局部变量:局部变量的存储区域改变、变为静态区,生命周期改为程序结束才销毁。

修饰全局变量:全局变量只能在本文件中访问,不能在其它文件中访问, extern 外部声明也不可以。

修饰成员变量:静态成员变量不属于实体的类对象,要在类外初始化

修饰成员函数:静态函数属于类不属于类对象 需要通过类作用域调用 函数无this指针(静态成员函数仅能访问静态的数据成员,不能访问非静态的数据成员,也不能访问非静态的成员函数)

#define

带参数的宏定义可以减少函数调用的开销,在运行时只是简单的展开。

const

申明一个常量,在运行期间可以进行类型检查。

mutable

mutable为可变的,易变的跟C++中的const是反义词。被mutable修饰的变量(mutable智能用于修饰类的非静态数据成员),将永远处于可变的状态, 即使在一个const函数中

typedef

用途:
1、为名称复杂的变量创建别名;
2、创建与平台无关的变量,当跨平台时,只要改下 typedef 本身就行,不用对其他源码做任何修改。
另外,因为typedef是定义了一种类型的新别名,不是简单的字符串替换,所以它比宏来得稳健(虽然用宏有时也可以完成以上的用途)。
比如:size_t的介绍

// 在vs中,short 2个字节,int 4个,long也是4个,long long 8个
typedef short int16_t;
typedef int int32_t;
typedef long long int64_t;
// 在Linux下,short 2个,int 4 个,long 8个,long long 也是8个
typedef short int16_t;
typedef int int32_t;
typedef long int64_t;

所以在程序源码中,只使用这些在头文件中声明的别名。
参考:typedef用法详解

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

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

相关文章

MAXENT模型的生物多样性生境模拟与保护优先区甄选、自然保护区布局优化评估及论文写作技巧

【查看原文】基于MAXENT模型的生物多样性生境模拟与保护优先区甄选、自然保护区布局优化评估及论文写作技巧 随着生物多样性全球大会的举办,不论是管理机构及科研单位、高校都在积极准备,根据国家林草局最新工作指示,我国将积极整合、优化自…

【Django项目开发】功能菜单模型类设计、视图类设计要点(一)

一、抽象模型类设计 1、抽象模型类设计的作用: 1、定义所有模型类的公共属性,当其他的模型类继承该抽象模型类时,就具备了模型类中的属性了;在项目开发中,减少代码的编写 2、抽象模型类中经常定义的字段包括&#xff…

HFSS使用经验二

目录 一、绘制空气盒 二、Driven Solution Setup 的设置 ​三、如何添加圆场放大图 四、仿真之前的Validate 五、开始仿真 六、仿真过程Solution Data的查看 一、绘制空气盒 选择Padding type为Absolute Offset 设定Boundary为Radiation辐射边界 空气盒比较大&#xff…

数据校验-springboot

前置知识 先了解一下JSR、Hibernate Validator、Spring Validation: JSR(Java Specification Request)规范是Java EE 6中的一项子规范,也叫作Bean Validation。它指定了一整套基于bean的验证API,通过标注给对象属性添…

数据可视化之中国足球队在国际足联及亚洲的历史排名看这儿

最近最热的体育盛事莫过于世界杯了,四年一届的足球盛事,正在卡塔尔激战正酣。这时候可能会有球迷疑问:怎么没看到中国队呢?也有网友调侃说中国队被分到工程队去了。 泱泱大国,难道中国十几亿人口,一个足球队…

【Javassist】快速入门系列02 使用Javassist实现方法执行时间统计

系列文章目录 01 在方法体的开头或结尾插入代码 02 使用Javassist实现方法执行时间统计 前言 上一章我们介绍了使用Javassist实现一个简单的Hello World程序,学会了Javassist创建类和新增方法。本章主要介绍如何使用Javassist实现一个无侵入的方法执行时间统计 …

DCN神州数码——DHCP相关操作指令(超详细)

DHCP服务器配置 service dhcp 启动DHCP 服务器或中继功能 ip dhcp pool pool1 network-address 1.1.1.1 24 default-router dns-server 8.8.8.8 domain-name dcn.com netbios-name-server 2.2.2.2 lease 5 ip dhcp excluded-address 2.2.2.2 创建DHCP地址池pool1配置地…

PHP反序列化详解(一)——反序列化基础

今天继续给大家介绍渗透测试相关知识,本文主要内容是PHP反序列化详解(一)——反序列化基础。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负&#x…

西藏旅行网站

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字): (1)旅游线路信息发布以及预定功能:顾客可通网站查看相应的旅游线路信息 和预定旅游线路功能,管理…

OpenCV(8)-OpenCV中的形态学

OpenCV中的形态学 形态学概述 什么是形态学处理: 基于图像形态进行处理的一些基本方法 这些处理方法基本上是对二进制图像进行处理卷积核决定这图像处理后的效果基本方法: 腐蚀与膨胀开运算闭运算顶帽黑帽 图像二值化 将图像的每个像素变成两种值&a…

服务器设置tomcat开机自启动(cmd命令行语句)

1 找到tomcat安装目录,进入bin/文件夹下面,在此打开windows 命令行窗口。 2 输入 service install tomcatXXX将tomcat注册成为windows服务,其中tomcatXXX为服务名。 3查看刚刚注册的服务 “我的电脑”-》右键管理 发现刚刚的服务是手动的&…

DevOps-6:Jenkins使用技巧

1、如何提升Jenkins的Job并行构建数 默认情况下,Jenkins只配置了2个Executor,即只允许最多2个Job同时构建,这个值可以修改: 在Manage Jenkins>Configure System里,找到 # of executors,修改这个值就好&…

DW学生美食网页设计作业——餐饮美食汉堡企业网站6页面带轮播(HTML+CSS+JavaScript)

👨‍🎓静态网站的编写主要是用HTML DIVCSS JS等来完成页面的排版设计👩‍🎓,常用的网页设计软件有Dreamweaver、EditPlus、HBuilderX、VScode 、Webstorm、Animate等等,用的最多的还是DW,当然不同软件写出的…

cython混淆加密

python代码是一种解释型的语言,有了代码和环境就可以执行,它无需编译。如果需要对代码进行混淆,可以借助cython这个库。它的安装很简单,直接运行pip install cython就可以安装。 进行代码混淆之前,还需要一个环境&…

windows下编译libevent源码

《Linux下编译libevent源码》讲述了linux下编译libevent源码的方法,本文讲述其在windows平台的编译。 一、下载libevent源码 https://libevent.org/ 下载libevent源码并解压。 二.安装依赖项 下载安装OpenSSL。https://slproweb.com/products/Win32OpenSSL.html 三…

MySQL8.0高级篇(下)-事务与日志和备份

文章目录一、事务基础知识1、数据库事务概述1.1 基本概念1.2 事物的ACID特性1.3 事务的状态2、如何使用事务2.1 显式事务2.2 隐式事务2.3 隐式提交数据的情况2.4 使用举例3、事务隔离级别3.1 数据准备3.2 数据并发问题3.3 SQL中的四种隔离级别3.4 MySQL支持的四种隔离级别4、事…

【实时数仓】DWM层订单宽表之需求分析、订单和订单明细关联源码

文章目录一 DWM层-订单宽表1 需求分析与思路2 订单和订单明细关联代码实现(1)从Kafka的dwd层接收订单和订单明细数据a 创建订单实体类b 创建订单明细实体类c 在dwm包下创建OrderWideApp读取订单和订单明细数据d 测试(2)订单和订单…

SpringBoot中的starter:whywhatmake

1、为什么用starter 我们知道,springboot框架是为了简化spring框架开发推出的,那么,在之前的spring框架开发中,如果我们需要连接数据库,引入mybatis框架,需要怎么操作呢?我们需要去maven仓库找…

当 chatGPT 被职场 PUA ,笑麻了

大家最近是不是被 chatGPT 刷屏了?简单来说,chatGPT 是一个智能聊天引擎。 那 chatGPT 和小爱同学、 siri 有什么区别呢? 如果体验过的朋友,能感受到区别还是很大,chatGPT 的智能表现过于优秀,远远超过了这…

深入浅出DPDK KNI核心技术

一、KNI KNI全称:Kernel NIC Interface,内核网卡接口,允许用户态程序访问linux控制平面。 在DPDK报文处理中,有些报文需要发送到内核协议栈进行处理,如GTP-C控制报文 如果报文数量较少,可以使用内核提供…