C++之指针和引用

在C++中,指针和引用是两种不同的机制,它们都可以用来间接访问变量。

指针

指针的声明和初始化

指针是一个变量,其值为另一个变量的地址。指针的声明语法如下:

type* ptrName;

例如,声明一个指向整数的指针:

int* ptr;

初始化指针,使其指向一个变量:

int var = 10;
int* ptr = &var;

这里&var是取地址运算符,它获取var的内存地址。

指针运算

指针可以进行一些特定的运算,如增加指针的值来移动到下一个元素(对于数组指针):

ptr++; // 移动到下一个整数

也可以比较指针:

if (ptr1 == ptr2) {// 指针指向相同的地址
}

还可以使用指针访问和修改它所指向的值:

*ptr = 20; // 修改ptr所指向的值为20
指针和数组

指针可以用于数组的遍历:

int arr[] = {1, 2, 3, 4, 5};
int* ptr = arr; // ptr指向数组的第一个元素
for (int i = 0; i < 5; ++i) {std::cout << *(ptr + i) << " "; // 输出数组元素
}

这里ptr + i是指针的算术运算,它移动指针到数组的第i个元素。

指针和函数

指针可以用来传递函数参数的地址,这样函数可以修改实际参数:

void increment(int* ptr) {(*ptr)++;
}int main() {int value = 0;increment(&value);std::cout << value << std::endl; // 输出1return 0;
}
动态内存管理(new和delete)

使用new分配动态内存,并使用delete释放:

int* ptr = new int(10); // 分配一个整数并初始化为10
delete ptr; // 释放内存

对于数组,使用new[]delete[]

int* arr = new int[5]; // 分配一个包含5个整数的数组
delete[] arr; // 释放数组内存

引用

引用的概念

引用是另一个变量的别名,一旦引用被初始化为一个变量,它就不能被改变为指向另一个变量。

引用的声明和使用

引用的声明语法如下:

type& refName;

例如,声明一个整数的引用:

int& ref = var;

这里ref就是var的别名,对ref的任何操作都等同于对var的操作。

引用和指针的区别
  1. 初始化:引用必须在声明时被初始化,而指针不必。
  2. 重新赋值:引用一旦被初始化后不能改变指向,而指针可以随时改变指向。
  3. 语法:使用引用时不需要解引用操作符*,而使用指针时需要。
  4. 语法糖:在函数参数中使用引用可以避免复制,提高效率,而指针则需要显式地解引用。
  5. 数组:不能有数组的引用,但可以有指向数组的指针。

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

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

相关文章

python代码获取zabbix上机器磁盘使用率

1.需要先给机器打上标记os_type: Linux或者os_type: Windows 2.代码请求获取数据&#xff1a; 先装一下相关的数据包 pip install pyzabbix from pyzabbix import ZabbixAPI import requests import urllib3 import concurrent.futuresclass ZabbixInfo():def __init__(self…

一个完整的crm系统都应该具备哪些功能?CRM系统功能盘点

前段时间我们去拜访一位企业老板&#xff0c;正好他们在开会&#xff0c;团队正在讨论如何与一位潜在的大客户达成交易。 客户对产品表现出浓厚的兴趣&#xff0c;也提出了一些具体的问题&#xff0c;例如上一次交易的详细信息、服务响应时间以及可能的折扣方案&#xff0c;但…

导师双选系统开发:Spring Boot技术详解

第一章 绪论 1.1 选题背景 如今的信息时代&#xff0c;对信息的共享性&#xff0c;信息的流通性有着较高要求&#xff0c;尽管身边每时每刻都在产生大量信息&#xff0c;这些信息也都会在短时间内得到处理&#xff0c;并迅速传播。因为很多时候&#xff0c;管理层决策需要大量信…

CTF顶级工具与资源

《Web安全》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484238&idx1&snca66551c31e37b8d726f151265fc9211&chksmc0e47a12f793f3049fefde6e9ebe9ec4e2c7626b8594511bd314783719c216bd9929962a71e6&scene21#wechat_redirect 《网安面试指南》h…

数列分块入门

本期是数列分块入门。其中的大部分题目来自hzwer在LOJ上提供的数列分块入门系列。 Blog:here (其实是对之前分块的 blog 的整理补充) sto hzwer orz %%% [转载] ---------------------------------------------------------------------------------…

模型自动绑骨,在线生成动画,神奇的网站《Mixamo》

英文名mixamo 网站地址&#xff1a;Mixamohttps://www.mixamo.com/#/首先进入需要注册&#xff0c;国内的手机号就可以&#xff0c;但是会有一些慢&#xff0c;多试几次 1、进入界面如下 2、载入自己的模型 2、绑定骨骼 拖动这几个有颜色的圈圈分别对应右图位置&#xff0c;点…

2024 CSS保姆级教程四

CSS中的动画 CSS动画&#xff08;CSS Animations&#xff09;是为层叠样式表建议的允许可扩展标记语言&#xff08;XML&#xff09;元素使用CSS的动画的模块​ 即指元素从一种样式逐渐过渡为另一种样式的过程​ 常见的动画效果有很多&#xff0c;如平移、旋转、缩放等等&#…

Docker安装anythingllm

拉镜像 docker pull mintplexlabs/anythingllm 启动 anythingllm docker run -d --name anythingllm --add-hosthost.docker.internal:host-gateway --env STORAGE_DIR/app/server/storage --health-cmd "/bin/bash/usr/local/bin/docker-healthcheck.sh || exit 1"…

格行:从新晋网红到国货之光,它究竟做对了什么?

作为一家迅速崛起的新消费品牌&#xff0c;近两年来&#xff0c;格行饱受质疑。 无论是商家还是消费者&#xff0c;都有人对其爱之恨之&#xff0c;喜欢它的人&#xff0c;认为它是正义的化身&#xff0c;价格的屠夫&#xff0c;国货的骄傲&#xff0c;原本需要花几百才能买到…

小菜家教平台(二):基于SpringBoot+Vue打造一站式学习管理系统

目录 前言 今日进度 详细过程 一、数据库重构 二、编写登录接口 相关知识点 前言 昨天我们重启了小菜家教平台的开发&#xff0c;创建了新项目并初步进行了配置&#xff0c;今天我们继续。大家要是有需要源码的话可以在评论区跟我说&#xff0c;博客中就不添加源码了~ 今…

数学期望和联合概率密度

数学期望的定义 数学期望是描述随机变量平均趋势的一个重要统计量。根据随机变量的类型&#xff08;离散或连续&#xff09;&#xff0c;数学期望的定义有所不同。 离散型随机变量的数学期望&#xff1a; 若离散型随机变量 X X X取值为 x 1 , x 2 , … , x n , … x_1,x_2,\do…

MRCTF2020:你传你ma呢

文件上传题先判断黑白名单过滤&#xff0c;先传个最简单的木马 这里上传不了php文件&#xff0c;猜测可能是对php文件进行了过滤&#xff0c;将文件改为任意后缀这里改为.abc 还是上传不成功&#xff0c;猜测可能对MIME也做了过滤&#xff0c;将Content-Type更改为image/jpeg再…

Harmony项目基础

项目基础 开发环境 DevEco Stuio下载和安装 DevEco Studio下载 下载链接:https://developer.huawei.com/consumer/cn/deveco-studio/ 安装IDE 直接运行安装文件即可 配置SDK及工具链 DevEco Studio 提供 SDK Manager 统一管理 SDK 及工具组件&#xff0c;包括如下组件包&…

《使用Gin框架构建分布式应用》阅读笔记:p307-p392

《用Gin框架构建分布式应用》学习第16天&#xff0c;p307-p392总结&#xff0c;总86页。 一、技术总结 1.AWS chapter 08讲使用AWS进行部署&#xff0c;可以根据需要选择是否阅读。因为使用到的概率很小&#xff0c;且还要绑卡&#xff0c;本人选择跳过。 2.CI/CD (1)什么…

新一代跟踪器StrongSORT: Make DeepSORT Great Again论文解析—让 DeepSORT 再次伟大

新一代跟踪器StrongSORT: Make DeepSORT Great Again论文解析—让 DeepSORT 再次伟大 时间&#xff1a;2023年 机构:北京邮电大学 发表在&#xff1a;IEEE TRANSACTIONS ON MULTIMEDIA, VOL. 25, 2023 代码源码地址&#xff1a; pytorch版本&#xff1a;https://github.com/dyh…

windows下安装jdk并配置环境

【1】安装jdk 这里建议傻瓜式安装&#xff0c;不要自定义路径&#xff0c;直接下一步下一步。 在Windows系统中安装JDK并设置环境变量&#xff08;包括JAVA_HOME和CLASSPATH&#xff09;是一个常见的任务。 1. 下载并安装JDK 访问Oracle官方网站或其他可信来源下载JDK安装包…

云安全真知实践 国内头部能源企业全面灵活云安全方案大公开

能源与安全&#xff0c;是两个紧密相连的齿轮&#xff0c;驱动着当今社会的运转与发展。能源是动力源泉&#xff0c;而安全则是守护这一动力的坚实支撑&#xff0c;保障着能源系统的运作与敏感数据的安全。 亚信安全一直以来为国内能源行业提供着安全保障&#xff0c;从石油、…

Photoshop 2025重磅来袭 :全新功能炫耀安装!Adobe全家桶

2024年10月&#xff0c;备受期待的Adobe Photoshop 2025正式版如约而至。每年的十月份&#xff0c;Adobe都会带来其软件的重要更新&#xff0c;而今年的Photoshop 2025则在改进和新功能方面做出了重磅升级&#xff0c;让创意工作者和设计师们倍感振奋。 新界面与核心功能 Ph…

【Java面试——计算机基础——网络——一篇就够了!!!】

1. 网络分层模型 1.1 OSI七层模型 OSI 七层模型 是国际标准化组织提出的一个网络分层模型&#xff0c;其大体结构以及每一层提供的功能如下图所示&#xff1a; 每一层都专注做一件事情&#xff0c;并且每一层都需要使用下一层提供的功能比如传输层需要使用网络层提供的路由和…

C#/.NET/.NET Core技术前沿周刊 | 第 11 期(2024年10.21-10.31)

前言 C#/.NET/.NET Core技术前沿周刊&#xff0c;你的每周技术指南针&#xff01;记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿&#xff0c;助力技术成长与视野拓宽。 欢迎投稿、推荐…