C++ 基础二

news2024/9/19 19:25:39

C++ 核心编程

1 内存分区模型

内存分区模型
代码区:存放函数的二级制代码,由操作系统进行管理的
全局区:存放全局变量和静态变量以及常量
栈区:由编译器自动分配释放,存放函数的参数值,局部变量等
堆区: 由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收
内存四区意义:不同区域存放的数据,赋予不同的声明周期,给我们更大的灵活编程

1.1 程序运行前

在程序编译后,生成了exe可执行文件,未执行该程序前分为两个区域。

代码区:

  • 存放cpu执行的机器指令
  • 代码区是共享的,共享的目的是对于频繁被执行的程序,只需要在内存中有一份打码即可
  • 代码区是只读的,使其只读的原因是防止程序意外的修改了它的指令

全局区:

  • 全局变量和静态变量存放于此
  • 全局区还包含了常量区,字符串常量和其他常量也存放于此
  • 该区域的数据在程序结束之后由操作系统释放

1.2 程序运行后

栈区:

由编译器自动分配释放,存放函数的参数值,局部变量等。
注意事项:不要返回局部变量的地址,栈区开辟的数据由编译器自动释放
堆区:

有程序员分配释放,若程序员不释放,程序结束之后有操作系统回收
在C++中主要利用new在堆区中开辟内存

int* p = new int(10);

new运算符
在堆区开辟数据

堆区开辟的数据,由程序员手动开辟,手动释放,释放用delete

2 new运算符

在堆区开辟数据

堆区开辟的数据,由程序员手动开辟,手动释放,释放用delete
语法:

new 数据类型

利用new创建的数据,会返回该数据对应类型的指针

int* p = new int(10);//分配一个整型,值为10,p指向它
int* arry = new int[10];//分配一个人42个int的数组;p指向第一个int
delete p;			//p必须指向一个动态分配的对象或为空
delete[] arry;	//arry必须指向一个动态分配的数组或为空

3 引用

3.1 基本使用

作用:给变量起别名

语法: 数据类型 &别名 = 原名

int a = 0;
int &b = a;
//a和b操作的是同一块内存

用引用给变量起别名
用引用给变量起别名
输出结果:
在这里插入图片描述

注意事项

  • 引用必须初始化——告诉它它是谁的别名
  • 引用在初始化之后,不可以改变

3.2 做函数参数

作用: 函数传参时,可以利用引用让形参修饰实参

优点: 可以简化指针修改实参(传址)。

void changeNums(int &a,int& b);//引用传递
int main(void)
{
    int a = 10;
    int b = 20;
    changeNums(a,b);
    //引用——其实上面的a就是下面a的一个别名
    return 0;
}

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

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

相关文章

5.1 矩阵的特征值和特征向量

学习步骤: 学习特征值和特征向量的定义和性质,我会采取以下方法: 1. 学习线性代数基础知识:特征值和特征向量是线性代数中的重要概念,需要先掌握线性代数的基础知识,例如向量、矩阵、行列式、逆矩阵、转置…

Bark:基于转换器的文本到音频模型

Bark是由Suno创建的一个基于转换器的文本到音频模型。Bark可以生成高度逼真的多语言语音以及其他音频,包括音乐、背景噪音和简单的音效。该模型还可以产生非语言交流,如大笑、叹息和哭泣。为了支持研究社区,我们正在提供对预先训练的模型检查…

生物信息学中---数据集不平衡的处理方法

1.NearMiss: NearMiss 是 Mani 等人根据数据分布特征,基于 KNN 算法提出的欠采样方案, 对多数类样本利用随机欠采样来达到数据平衡。 根据不同数据采样的距离,可以分为三类: NearMiss-1、 NearMiss-2 和 NearMiss-3。…

什么是数据库分片?

什么是数据库分片? 数据库分片是指将一个大型数据库拆分成多个小型数据库,每个小型数据库称为一个分片。通过这种方式,可以将数据库的负载分散到多个服务器上,从而提高数据库的性能和可伸缩性。 为什么需要数据库分片&#xff1f…

从一到无穷大 #7 Database-as-a-Service租户隔离挑战与解决措施

文章目录 引言计算侧多租户隔离2DFQSQLVMRetro 其他隔离方法其他 引言 在云环境中租户之间的资源共享对于运营商的成本效益来说非常重要,但是一个主要问题是租户之间的资源隔离,这通常与Qos息息相关,从多租户的角度讲,安全性/性能…

ChatGPT 不好用?那你看下这份 Prompt 工程指南

作为大型语言模型接口,ChatGPT 生成的响应令人刮目相看,然而,解锁其真正威力的关键还是在于提示工程。 在本文中,我们将揭示制作提示的专家级技巧,以生成更准确、更有意义的响应。无论你使用 ChatGPT 是为了服务客户、…

用格林童话教你1分钟清晰JS加密

在许多格林童话中,我们可以看到许多隐藏的玄机和谜题,就像JavaScript代码一样。为了保护您的代码安全,我们可以使用JavaScript混淆加密技术来隐藏代码中的逻辑和关键信息。在本文中,我们将以“灰姑娘”为例,介绍如何使…

【视频解读】动手学深度学习V2_00预告

00预告 【动手学深度学习V2】 深度学习是人工智能最热的领域,在过去十年,人工智能的主要突破都来自于深度学习。 深度学习的核心是神经网络,它与人工智能的其他领域不一样的是,神经网络是一个非常灵活的框架,它允许我…

typescript is类型谓词

一、类型谓词是干嘛的? 类型谓词可以有效的帮助我们根据条件缩小类型范围(narrowing)。它与 typeof、instanceof、in类似。但是不同的是typeof、instanceof、in关键字在js中已经是存在的,在ts中使用它们,进行类型收缩…

为什么北欧的顶级程序员数量远远超于中国?

说起北欧,很多人会想到寒冷的冬天,漫长的极夜,童话王国和圣诞老人,但是如果我罗列下诞生于北欧的计算机技术,恐怕你会惊掉下巴,先来看一些人物介绍: Linus Torvalds:是芬兰籍的计算…

人才引进都选什么大学,哪些世界大学排名更靠谱?

最近几年,全国各地都在加大力度引进人才。上海市2020年首先推出留学生落户政策,毕业于世界排名前50名大学的留学生可直接申办落户,毕业于51-100名大学的,缴纳社保满6个月后可申办落户。 国家人事部门也确定了留学生“国家引进人才…

Portraiture4.03一款适用于PS与LR的智能AI磨皮修饰滤镜插件

一款好的图片磨皮软件可以解放修图者的双手,减去繁琐的抠图操作,轻松去除人像脸部的瑕疵。经典而实用的portraiture图片磨皮软件,是人像修图的颇佳选择。 Portraiture 4 是专为人像磨皮开发的经典滤镜,多年以来已经成为人像后期基…

不懂新经济的周黑鸭,陷入“诺基亚式”困境

2022年,卤味巨头们的日子并不好过。曾经创造辉煌业绩的卤味三巨头绝味、周黑鸭、煌上煌,如今都处于业绩下滑的困境之中,巨头自救已然迫在眉睫,其中周黑鸭正在接受挑战的路上。 近期,周黑鸭在武汉举办首届单店特许领袖峰…

YOLO系列损失函数详解

YOLOV1 YOLOV1最后生成77的网格(grid cell),每个grid cell会产生两个预测框(bounding box),每个grid cell产生的两个预测框只能预测同一种类物体,也就是说YOLOV1最多只能预测49种物体,两个预测框中哪一个与标注框的IOU大就选哪一个…

创新案例 | Web3典范BrainTrust如何打造DAO增长飞轮3年扩张50倍

BrainTrust是一家创新的多边平台,类似于去中心化的BOSS直聘。在过去三年中,BrainTrust取得了惊人的增长,总服务价值增长了50倍以上。这家公司的增长模式非常独特,使得它的增长飞轮一路狂飙。在2022年,BrainTrust的成绩…

IP地址是如何定位的

IP地址是互联网中计算机的唯一标识,它由32位二进制数组成,分为四个8位的数字,每个数字之间用"."隔开,例如:106.110.92.215。IP地址的归属地指的是这个IP地址所在的地理位置,对于网络安全、网络监…

巧用语言模型——让准确率再涨一点点!

还记得在去年,我们曾经发过一篇文章介绍 icefall 中的语言模型使用方法:升点小技巧之—在icefall中巧用语言模型。如今半年过去了,k2 团队又有了一些新进展。今天来给大家做一个小小的总结,再给大家的模型涨涨点(又又又…

【问题解决】小米 升级后蓝牙关闭后 早上自动打开怎么办?

目录 原理 连接态: 半连接态:​编辑 关闭态:​编辑 重点来了 升级小米MIUI 14后,发现蓝牙无法关闭,每天睡觉前点击关闭,第二早上它又自动打开,感觉 手机中毒了!! 经过一番研究,搞…

YOLOv6 4.0 使用记录: OpenCV DNN C++推理

目录 1、下载源码 2、下载权重文件 3、配置环境 4、推理 6、ONNX格式导出 权重文件为yolov6list_s.pt 权重为yolov6.pt 7、opencv DNN推理 8、个人总结 1、下载源码 下载最新的4.0版本的 2、下载权重文件 我下的是YOLOv6Lite-S 3、配置环境 cd到项目目录,运…

国民技术N32G430开发笔记(16)- IAP升级 整合多个bin文件为一个升级包

IAP升级 整合多个bin文件为一个升级包 1、我们的程序分区目前为: Boot 0x8000000 – 0x8004000 16KB Settings 0x8004000 – 0x8006000 8KB App 0x8006000 – 0x800B000 20KB Download 0x800B000 – 0x800FFFF 20KB 2、烧录时候的bin文件有三个: Bootl…