c++基础 易道云笔记

news2025/1/13 7:30:44

c++基础语法

编程快捷操作使用方法

反汇编: 先设置一个断点,调试后,在调试菜单中选择窗口,选择反汇编
**单词替换:**先按下ctrl+f查找,再替换

基础知识辨析

1.数组指针 int (*ptest)[5] {} //该指针可以处理每行有5个元素的数组;
2.指针数组 int* ptestA[5] //包含5个指针的数组

3.动态分配内存中

如果需要分配内存,在c中有以下几种
1.void* malloc(n*sizeof(int))
eg:int* p = (int*)malloc(10*sizeof(int));

2.void* calloc(x*sizeof(int))1的区别就是会将分配的内存单元全部设为0

3.void* realloc(void*,int),适用于重新分配内存,重新分配后的内存数据不丢失,但是地址变化
eg:int* pa = (int*)malloc(4);
		pa=(int*)realloc(pa,8);

4.void free(void* Block) 释放内存
	free(pa);p = 0;

5.c++内存动态分配
	int* p, * pm;
	p = new int;
	p[100] = 50;
	pm = new int[x];

	delete p;
	delete[] pm;
	
6.复制内存

void* memcpy(void* 要复制的对象,void* 复制到哪儿,int size字节);
void* memset(void* Des,int val,size_t Size)
eg:memset(p, 0,100*sizeof(int));

4.引用

int a =10;
int b=10;
int& pa = a; /注意引用指向是不可以换变量的,只能指向a
pa = b ;/该操作是让a=b;

5.堆和栈: 堆是空闲内存,栈是程序在编译的时候就已经确定了大小的一段内存区域,效率要高于堆,但是容量有限

6.智能指针: std::unique_ptr是智能指针的一种,目的是为了解决原生指针安全性不足的弊端
智能指针只能指向一个内存空间,不可重复指向
声明语法:std::unique_ptr<类型> 变量名称{}
c++14以后,eg

std::unique_ptr<int[]> 变量名称 {std::make_unique<int[]> (5)} 该变量数组有5个值;
std::unique_ptr<int> 变量名称 {std::make_unique<int> (5)} /对该指针指向的值赋值为5

智能指针的方法:
reset()指令,会释放std::unique_ptr的内存空间,并且将std::unique_ptr设置为nullptr;

get(),将会返回std::unique_ptr的指针,返回的是原始(非智能)指针

release(); 将会返回std::unique_ptr的指针并且将std::unique_ptr设置为nullptr。

std::move()用于转移指针变量
eg:

std::unique_ptr<int> ptrA = std::make_unique<int>(150);
std::unique_ptr<int> ptrB;
ptrB = std::move(ptrA)/将ptrA转移到ptrB,此后ptrA会指向0

7.共享智能指针: std::shared_ptr<int> ptrA{}可以有多个std::shared_ptr指向同一地址,当最后一个指针释放后,才会释放其所占有的内存空间
生成方法,c++14后同上

std::shared_ptr<int> 变量名称 {std::make_shared<int> (5)} /对该指针指向的值赋值为5
/注意std::make_shared不支持数组,如果要用数组按下方式使用
std::shared_ptr<int[]> ptrC = new int[5]{1,2,3,4,5}

拥有方法:

long std::shared_ptr.use_count(); / 返回当前指针共有多少个对象调用

bool std::shared_ptr.unique();/返回当前是否只有一个智能指针指向该数据

bool std::shared_ptr.reset() / 将当前置nullptr,如果是最后一个,则释放内存

8.字符串
常量字符串是const char*类型
如果要在控制台输出中文字符–即 Unicode32,需要做本地化操作

#include<locale>
setlocale(LC_ALL, "chs");

9.指针和结构体
有以下代码,我们注意到如果是结构体的指针,是需要->来指向其中的元素的,只有实体才可以用.来访问

typedef struct Role {
	int Hp;
	int Mp;
}*PRole;


int main() {
	Role user;
	PRole puser = &user;

	puser->Hp = 50;//指针偏移形式
	user.Hp = 500;

}

编译器并不知道一个结构有多大,所以用指针的的时候,编译器只有通过该指针指向的元素离指针起始点的距离来确定该结构体元素,从下列汇编语言能看出一二
在这里插入图片描述

10.联合体 共享成员变量的内存

11.std::string字符串

初始化方法:
①直接用字符串初始化
②std::string 变量名称 {“字符串”, 要截取的长度};
③std::string 变量名称{“字符串”, 起始位置,要截取的长度};
④std::string 变量名称 {要复制的个数, ‘字符’};

string连接字符串
str = “hyd123”+str1;
eg:string str2 = string{"abc"}+ "1234"

string连接字符
str = str1+‘a’;
基本方法:

1.转化为字符串
std::string std::to_string(数字)

2.字符串拼接
str1 = str.append(“456”);
str1 = str.append(“456”,1);截取第一个拼接
还有一些append方法和初始化方法相同

3.截取
str1.strsub(1),从1号位置开始往后都截取
str1.strsub(1,3),/从1号位置开始,截取3个位置

4.获取长度
int length = str1.length();

5.字符串的比较除了用> = <外,还有compare,返回int类型
compare类型
在这里插入图片描述

6.搜索:如果要找到子串的起始位置信息,需要用到find函数
在这里插入图片描述
在这里插入图片描述

7.字符串的插入操作,可以在指定位置插入字符串
在这里插入图片描述
8.字符串的替换操作,可以替换某个字串
在这里插入图片描述
在这里插入图片描述
9.对字符串删除子串的操作

10.字符串与数字的转化
在这里插入图片描述

指针与字符串的关系
字符串string 类型是从第四个字节开始存放字符串的,有以下方法
在这里插入图片描述

stringstream: string类型可以类似std::cout创造一个流,更方便处理字符串,
在这里插入图片描述

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

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

相关文章

sqlilabs第四十九五十关

Less-49(GET - Error based - String Bind - ORDER BY CLAUSE) 手工注入 无回显(还是单引号闭合)&#xff0c;只能使用延时注入 自动脚本 和上一关一样 Less-50(GET - Error based - ORDER BY CLAUSE -numeric- Stacked injection) 手工注入 这里需要使用堆叠注入的思路 自…

React07-路由管理器react-router-dom(v6)

react-router 是一个流行的用于 React 应用程序路由的库。它使我们能够轻松定义应用程序的路由&#xff0c;并将它们映射到特定的组件&#xff0c;这样可以很容易地创建复杂的单页面应用&#xff0c;并管理应用程序的不同视图。 react-router 是基于 React 构建的&#xff0c;…

谈谈Spring Bean

一、IoC 容器 IoC 容器是 Spring 的核心&#xff0c;Spring 通过 IoC 容器来管理对象的实例化和初始化&#xff08;这些对象就是 Spring Bean&#xff09;&#xff0c;以及对象从创建到销毁的整个生命周期。也就是管理对象和依赖&#xff0c;以及依赖的注入等等。 Spring 提供…

重学MySQL之关系型数据库和非关系型数据库

1 关系型数据库 1.1 关系型数据库的特性 1.1.1 事务的特性 事务&#xff0c;是指一个操作序列&#xff0c;这些操作要么都执行&#xff0c;或者都不执行&#xff0c;而且这一序列是无法分隔的独立操作单位。也就是符合原子性&#xff08;Atomicity&#xff09;、 一致性&…

C语言——结构体类型(二)【结构体内存对齐,结构体数组】

&#x1f4dd;前言&#xff1a; 上一讲结构体类型&#xff08;一&#xff09;中&#xff0c;我们讲述了有关结构体定义&#xff0c;创建&#xff0c;初始化和引用的内容&#xff0c;这一讲&#xff0c;我们进一步学习结构体的相关知识&#xff1a; 1&#xff0c;结构体内存对齐…

Delphi 11.3配置android环境

电脑安装dephi11.3的时候&#xff0c;勾选android sdk&#xff0c;但是软件安装好以后&#xff0c;还有问题 在Delphi—tool —options 里边&#xff0c;Deployment下SDKManager 中&#xff0c;看到SDk里边的感叹号&#xff0c;说明android sdk没有安装好 解决方法有2种 第一种…

MySQL从0到1全教程【1】MySQL数据库的基本概念以及MySQL8.0版本的部署

1 MySQL数据库的相关概念 1.1 数据库中的专业术语 1.1.1 数据库 (DB) 数据库是指:保存有组织的数据的容器(通常是一个文数据库 (database)件或一组文件)。 1.1.2 数据库管理系统 (DBMS) 数据库管理系统(DBMS)又称为数据库软件(产品)&#xff0c;用于管理DB中的数据 注意:…

小H靶场笔记:Empire-Breakout

Empire&#xff1a;Breakout January 11, 2024 11:54 AM Tags&#xff1a;brainfuck编码&#xff1b;tar解压变更目录权限&#xff1b;Webmin&#xff1b;Usermin Owner&#xff1a;只惠摸鱼 信息收集 使用arp-scan和namp扫描C段存活主机&#xff0c;探测靶机ip&#xff1a;1…

横版动作闯关游戏:幽灵之歌 GHOST SONG 中文版

在洛里安荒凉的卫星上&#xff0c;一件长期休眠的死亡服从沉睡中醒来。踏上发现自我、古老谜团和宇宙骇物的氛围2D冒险之旅。探索蜿蜒的洞穴&#xff0c;获得新的能力来揭开这个外星世界埋藏已久的秘密。 游戏特点 发现地下之物 探索这个广阔而美丽如画&#xff0c;充满密室和诡…

Graham扫描凸包算法

凸包&#xff08;Convex Hull&#xff09;是包含给定点集合的最小凸多边形。凸包算法有多种实现方法&#xff0c;其中包括基于递增极角排序、Graham扫描、Jarvis步进法等。下面&#xff0c;我将提供一个简单的凸包算法实现&#xff0c;基于Graham扫描算法。 Graham扫描算法是一…

关于PhpStorm的安装激活与汉化

访问官网下载PhpStorm https://www.jetbrains.com/phpstorm/download/#sectionwindows 点击download 下载好后&#xff0c;双击exe安装程序 点击下一步 选择安装位置 前两个肯定需要勾选&#xff1a; 创建桌面快捷方式&#xff1b;创建关联php&#xff1b; 根据以往经验&am…

CES 2024丨引领变革,美格智能为智能终端带来生成式AI能力

作为电子行业的“风向标”&#xff0c;CES 2024&#xff08;国际消费电子展&#xff09;于1月9日至12日在美国拉斯维加斯举办。本届展会可谓是AI的盛宴&#xff0c;芯片、AI PC、智能家居、汽车科技、消费电子等领域与AI相关的前沿成果接连发布&#xff0c;引领人工智能领域的科…

【数据库】视图索引执行计划多表查询笔试题

文章目录 一、视图1.1 概念1.2 视图与数据表的区别1.3 优点1.4 语法1.5 实例 二、索引2.1 什么是索引2.2.为什么要使用索引2.3 优缺点2.4 何时不使用索引2.5 索引何时失效2.6 索引分类2.6.1.普通索引2.6.2.唯一索引2.6.3.主键索引2.6.4.组合索引2.6.5.全文索引 三、执行计划3.1…

leaflet学习笔记-缓冲区绘制(六)

前言 在GIS开发中&#xff0c;缓冲区的绘制和使用是非常广泛的&#xff0c;一般情况下就是对缓冲区范围内的要素做分析使用&#xff0c;也会有一些其他的操作&#xff0c;下面我就记录一下使用leafletturf.js完成缓冲区的绘制操作 turf.js简介 Turf.js 是一个用于地理空间计…

上架苹果APP的时候在哪里填写APP的隐私政策信息

在如今高度重视数据隐私的时代&#xff0c;开发并上架一个iOS APP时提供透明的隐私政策是非常重要的。苹果公司对此有严格的规定&#xff0c;任何上架至App Store的应用都必须包含一个隐私政策。以下是您在上架苹果APP时填写隐私政策信息的详细步骤和必须注意的事项。 准备隐私…

考古学家 - 华为OD统一考试

OD统一考试 分值&#xff1a; 200分 题解&#xff1a; Java / Python / C 题目描述 有一个考古学家发现一个石碑&#xff0c;但是很可惜发现时其已经断成多段。 原地发现N个断口整齐的石碑碎片&#xff0c;为了破解石碑内容&#xff0c;考古学家希望有程序能帮忙计算复原后的石…

最新PyCharm安装详细教程及pycharm配置_pycharm安装教程

目录 一、PyCharm简介及其下载网站 二、单击网站的Downloads&#xff0c;进入二级页面&#xff0c;选择对应的操作系统下载PyCharm 三、PyCharm的安装程序的安装及其配置(configuration) 1、运行PyCharm Setup 2、安装位置设置 3、安装选项设置 4、开始菜单中PyCharm快捷方式的…

Unity中向量的点乘、叉乘区别和作用以及经典案例

文章目录 点乘&#xff08;Dot Product&#xff09;叉乘&#xff08;Cross Product&#xff09;向量归一化&#xff08;Normalize&#xff09;其他作用 unity开发中我们要计算角度&#xff0c;判断位置&#xff0c;常用点乘、叉乘、归一化等等&#xff0c;我们看看他们的使用案…

Android 通知简介

Android 通知简介 1. 基本通知 图1: 基本通知详情 小图标 : 必须提供,通过 setSmallIcon( ) 进行设置.应用名称 : 由系统提供.时间戳 : 由系统提供,也可隐藏时间.大图标(可选) : 可选内容(通常仅用于联系人照片,请勿将其用于应用图标),通过setLargeIcon( ) 进行设置.标题 : 可选…

中国社科院大学与美国杜兰大学金融管理硕士项目——熬过寒冬,春日暖阳已不远

在金融领域&#xff0c;寒冬似乎成了无法避免的阶段。然而&#xff0c;对于那些坚守岗位的金融从业者来说&#xff0c;熬过寒冬并非无望。正如冬去春来&#xff0c;只要我们采取明智的策略&#xff0c;迈出坚定的步伐&#xff0c;春日的暖阳已在不远方照耀。社科院与美国杜兰大…