c++ 指针,new运算符

news2025/7/12 7:33:27

1、指针相关基础知识:

1.1、指针一般指向变量的地址,等同于变量名前加&,如下:

int a = 3;
int* p;
p = &a;

 1.2、 * 符号被称为间接值运算符或解除引用运算符,将其运用于指针,可以获取指针指向的值。

if (*p == a)
	cout << "*p == a" << endl;

结果:

定义指针的两种方式:

int a = 3;

方法1: int* p = &a;

方法2: int* p;
        p = &a;

 1.3、指针的错误用法,在定义指针后,直接将指针指向具体的值或字符,如:

int *p;
*p = 2;

 由于创建指针时,计算机只会给指针分配储存地址的空间,而不会分配指针指向的数据的储存空间,因此,在进行如上操作后,指针p的地址将会由系统随机分配,但不论分配的地址为任何值,系统都会将该值解释为指向2的地址。

1.4、 自定义地址,注意在地址前加上对应指针类型的强制类型转换语句,如:(int *)

int* pt;
pt = (int*)0xb8000000;

2、new运算符基础

2.1作用:

变量是已命名的内存,通过创建指针这个别名可以调用它,但是想要调用一个未命名的内存,则需要用new运算符来实现,即,new的作用是调用未命名的内存并储存值,这个内存是程序运行到new所在部分由系统实时分配的

调用格式:

typename *pointer_name = new type_name

 如:

	int* pn = new int;
	*pn = 20;
	cout << "*pn:"<< * pn << endl;

2.2应用:用于在判断语句中给未命名内存存储值:

 使用指针形式结合new运算符即可正常在判断语句外获取正确的值(同样使用于仅使用指针时):

	float *kFactor = new float;
	int *edgeThresh = new int;
	int *contour_bound = new int;
	int mode = 2;

	if (mode == 1) {
		* kFactor = 0.5;
		* edgeThresh = 40;
		* contour_bound = 20;
	}
	else {
		*kFactor = 0.9;
		*edgeThresh = 30;
		*contour_bound = 80;
	}
	cout << "kFactor:" << *kFactor << endl;

结果:

 2.3 delete运算符

        在使用完new创建的内存后,可以用delete对new调用的内存进行释放,即:

int *p = new int;

delete p;

 注意:1、不能重复释放多次。2、尽量不创建指向同一个内存的指针,来避免多次释放同一内存。

3、使用new创建动态数组

3.1 说明

        常规的声明数组的做法,会在程序编译时就为其分配内存空间,不管之后是否对其使用,都会占用空间,这样的作法叫做静态联编(static binding)。而使用new来创建的数组,则只会在使用到它的时候为其创建内存,且可以在运行时选择数组的长度,这种做法叫动态联编(dynamic binding),而此时创建的数组叫做动态数组

3.2 创建与使用

示例:

int *ps = new int [10];

delete [] ps;//方括号意味着在释放整个数组,必须加!!!

调用:将指针名当数组名使用,在后面加上对应的索引即可,如:

	int* p = new int[3];
	p[0] = 1;
	p[1] = 2;
	p[2] = 3;
	//cout << p[0] << endl;
	//cout << *p + 1 << endl;
    delete[]p;

附,注意事项:

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

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

相关文章

【Java八股文总结】之IO流

文章目录Java IO流一、IO基础知识1、字节流2、字符流3、字节缓冲流4、打印流5、随机访问流6、字节流和字符流的区别&#xff1f;二、IO设计模式1、装饰器模式2、适配器模式Q&#xff1a;适配器模式和装饰器模式的区别&#xff1f;3、工厂模式4、观察者模式三、IO模型详解&#…

柯桥留学日语培训机构有吗日本人平时都喝什么酒?

日本葡萄酒侍酒大师高野丰先生&#xff0c;带来一瓶在北海道发现的陈年白兰地。 那是2014年的事&#xff0c;高野先生去北海道十胜地区的一家葡萄酒厂考察&#xff0c;在一个多年未开启的葡萄酒储存库的角落里&#xff0c;发现了一只陈旧的酒桶&#xff0c;他很好奇地问酒厂的…

Javaweb filter过滤器 跟 listener监听器

Filter 权限控制&#xff1a;登录才能进数据库等 统一编码&#xff1a;统一各种编码 Filter快速入门 放行前&#xff0c;我们对request里的数据进行处理 处理完&#xff0c;然后放行&#xff0c;携带到对应的资源里去 放行后&#xff0c;对response的数据进行处理 //将re…

C/C++问题:一个指针的大小是多少?怎么理解指针变量的存在

目录 举例 一、 int a; int (*(*v)[])(); 二、 int func(); int (*func)(); 三、 const; int const a; const int a; int const*r; int *const r; 四、一个指针的大小是多少&#xff1f;&#xff08;补充&#xff09; 举例 一、 int a; 可以看到上面声明了一个变…

【MySQL基础】SQL语言的概述、组成及特点

目录 一、SQL的概述 二、SQL语言的组成 三、SQL语言的特点 语法特点&#xff1a; &#x1f49f; 创作不易&#xff0c;不妨点赞&#x1f49a;评论❤️收藏&#x1f499;一下 一、SQL的概述 SQL全称&#xff1a; Structured Query Language&#xff0c;是结构化查询语言&am…

数据结构先序序列创建二叉树

2022.11.19连发两回。 先序序列创建二叉树任务描述相关知识编程要求测试说明C/C代码任务描述 本关任务&#xff1a;利用先序遍历创建二叉树&#xff0c;并给出相应二叉树的中序遍历结果。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;1.二叉树的前序遍历&a…

win11系统下,迅雷启动后闪退的问题

win11系统&#xff0c;迅雷最新版本。 之前用迅雷一直好好的&#xff0c;某天要下东西突然发现点击就闪退&#xff0c;进程管理器里一点痕迹都没有。 启动就闪退&#xff0c;没有一点点痕迹。 因为之前是win10系统&#xff0c;一直用的好好的&#xff0c;考虑是不是win11系统…

创建自己数据集全套流程

目录 1、准备自己具有的数据集 2、标注数据----json格式 3、标注数据转为分割图----voc格式 4、增广数据集 5、分训练集以及验证集 1、准备自己具有的数据集 注意&#xff1a;数据集必须是统一的后缀格式&#xff0c;jpg或者png 2、标注数据----json格式 采用labelme标注…

前后端分离项目(vue+springboot)集成pageoffice实现在线编辑office文件

前后端分离项目下使用PageOffice原理图 集成步骤 前端 vue 项目 在您Vue项目的根目录下index.html中引用后端项目根目录下pageoffice.js文件。例如&#xff1a; <script type"text/javascript" src"http://localhost:8081/samples-springboot-back/pageof…

gom传奇引擎无限蜂功能插件安装图文教程

无限蜂功能插件安装教程 1. 百度搜索无限蜂官网,下载功能插件程序&#xff0c;请下载最新版&#xff01;2. 下载无限蜂功能插件&#xff0c;到桌面&#xff0c;并进行解压&#xff0c;如下图所示。 3. 打开无限蜂功能插件控制台(?.?.?)&#xff0c;进行账号注册。 4. 注册成…

InnoDB之Undo log格式

1. 前言 InnoDB有两大日志模块&#xff0c;分别是redo log和undo log。为了避免磁盘随机写&#xff0c;InnoDB设计了redo log&#xff0c;数据写入时只写缓冲页和redo log&#xff0c;脏页由后台线程异步刷盘&#xff0c;哪怕系统崩溃也能根据redo log恢复数据。但是我们漏了一…

STC51单片机32——液晶1602显示

//用LCD循环右移显示字符 //开发板上的跳帽连接Vcc #include<reg51.h> //包含单片机寄存器的头文件 #include<intrins.h> //包含_nop_()函数定义的头文件 sbit EP2^7; //使能信号位&#xff0c;将E位定义为P2.7引脚 sbit RSP2^6; //寄存器选择位&#…

Js逆向教程-09常见的加密方式

作者&#xff1a;虚坏叔叔 博客&#xff1a;https://xuhss.com 早餐店不会开到晚上&#xff0c;想吃的人早就来了&#xff01;&#x1f604; Js逆向教程-09常见的加密方式 常见的加密方式 一、js逆向流程 抓包调试扣去js改写本地运行 二、常见的加密方式 2.1取盐校验 不可…

【考研复试】计算机相关专业面试英语自我介绍范文(一)

文章目录前言&#xff1a;1.第一段&#xff1a;打招呼寒暄2.第二段&#xff1a;自我介绍3.第三段&#xff1a;为什么要读研4.第四段&#xff1a;个人优势5.第五段&#xff1a;立flag前言&#xff1a; 英语面试第一件事情就是让考生做自我介绍&#xff0c;考官可以借此机会了解…

图片编辑软件怎样加文字内容?图片添加文字方法大分享

大家平时在分享自己拍摄的照片时&#xff0c;有些时候会不会觉得照片有点单调&#xff0c;想在上面添加一些文字来装饰图片呢&#xff1f;又或者是在日常生活中&#xff0c;不小心拍到朋友的搞怪表情&#xff0c;这时候要是加上一些有趣的文字&#xff0c;就可以免费获得一个表…

Design A Twitter

title: Notes of System Design No.04 —Design a Twitter description: ’ Design a Twitter ’ date: 2022-05-14 09:50:32 tags: 系统设计 categories: 系统设计 00.What is Twitter 注&#xff1a;TimeLine 就是按照时间顺序显示的信息流 01. Functional Requirements 1…

特征工程(六)—(1)利用PCA进行特征转换

(1)鸢尾花数据集的手动处理 PCA利用了协方差矩阵的特征值分解 过程如下&#xff1a; (1)创建数据集的协方差矩阵 (2)计算协方差矩阵的特征值 (3)保留前K个特征值(按照特征值降序排列) (4)要保留的特征向量转换新的数据点 1、加载鸢尾花数据集 import matplotlib as mpl # 解…

js实现瀑布流

我们浏览网站的时候尤其是图片网站&#xff0c;我们会发现大大小小的图片&#xff0c;紧密的排列在一起&#xff0c;就像瀑布一样看着非常舒服&#xff0c;虽然css可以通过cloums来指定&#xff0c; 像我们这次的图片项目用的就是css实现的&#xff0c;最后布局是用grid布局写的…

【Spring(一)】如何获取对象(Bean)

目录 一、前言 二、Spring的下载 三、快速入门 四、IOC&#xff08;控制反转&#xff09; 五、创建XML配置文件 六、获取Bean   1. 按类型来获取Bean   2. 按id来获取Bean   3. 按idclass来获取Bean   4. 默认的一种特殊方式获取Bean   5. 有关id的一些说明 相关文章 Serv…

cpu设计和实现(流水线上的第一条指令)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 读书的时候&#xff0c;《计算机组成原理》也看了&#xff0c;《计算机体系结构》也学了&#xff0c;老师也给我们讲了各种各样的流水线知识&#…