06-C++学习笔记-指针的定义与使用

news2024/11/24 14:13:13

在这里插入图片描述

指针是C++中非常重要的概念,它允许直接访问内存地址,并通过地址操作变量。本篇笔记将介绍指针的定义与使用方法,以及指针与数组的关系。

1️⃣ 指针的引入

指针的引入是为了解决需要直接访问内存地址的情况。通过指针,可以间接访问和操作变量,提供了更灵活的编程方式。

2️⃣ 指针的定义与使用

✨ 指针的定义形式与方法及其含义

指针的定义形式为:数据类型* 指针变量名。其中,数据类型表示指针所指向变量的数据类型,*表示指针的定义,指针变量名是为指针定义的标识符。

以下是一个指针的定义和使用的示例:

int* ptr; // 定义一个指向整数类型的指针

✨ 通过指针间接访问

通过指针,可以通过访问指针所指向的内存地址来操作变量。通过使用*运算符,可以间接访问指针所指向的值。

int num = 10;
int* ptr = # // 将指针ptr指向变量num的地址

std::cout << *ptr; // 输出指针所指向的值,即输出 10

在这里插入图片描述

✨ 指针的初始化

指针变量可以在定义时进行初始化,即指向某个特定的地址或者其他变量。

int* ptr = nullptr; // 初始化为空指针

int num = 20;
int* ptr = &num; // 初始化为指向变量num的地址

✨ 指针运算

指针也支持运算操作,如加法、减法等。指针的运算是基于指针所指向的数据类型的大小来进行的。

int arr[5] = {1, 2, 3, 4, 5};
int* ptr = arr; // 指向数组arr的首地址

std::cout << *ptr; // 输出指针所指向的值,即输出 1
std::cout << *(ptr + 1); // 输出指针所指向的下一个元素的值,即输出 2

✨ 指针的const限定

可以将指针声明为const,以限制指针的操作。const指针表示指针的值不能被修改。

int num = 30;
const int* ptr = &num; // 声明一个指向常量的指针

// *ptr = 40; // 错误,不能通过指针修改所指向的值

✨ const指针

也可以将指针本身声明为const,表示指针本身的值不能被修改。

int num = 40;
int* const ptr = &num; // 声明一个常量指针

// ptr = nullptr; // 错误,不能修改指针的值

在这里插入图片描述

2️⃣ 数组与指针

数组与指针有着密切的关系,实际上,数组名可以被解释为指向数组首元素的指针。

✨ 数组的首地址

数组名可以看作指向数组首元素的指针。通过使用数组名,可以获得数组的首地址。

#include <iostream>
using namespace std;

int main(){
	int arr[5] = {1, 2, 3, 4, 5};
	cout << "数组的首地址:" << arr; // 输出数组的首地址
	return 0;
}

运行结果:
在这里插入图片描述

✨ 指向数组的指针变量

可以定义指向数组的指针变量,并将其指向数组的首地址。

#include <iostream>
using namespace std;

int main(){
	int arr[5] = {1, 2, 3, 4, 5};
	int* ptr = arr; // 指向数组arr的首地址
	cout << "数组arr的首地址:" <<ptr;
	return 0;
}

运行结果:
在这里插入图片描述

✨ 通过指针访问数组

通过指针,可以通过指针运算访问数组的元素。

#include <iostream>
using namespace std;

int main(){
	int arr[5] = {1, 2, 3, 4, 5};
	int* ptr = arr; // 指向数组arr的首地址

	cout << "第一个元素的值:"<<*ptr << "\n"; // 输出数组第一个元素的值,即输出 1
	cout << "第二个元素的值:" << *(ptr + 1); // 输出数组第二个元素的值,即输出 2
	return 0;
}

运行结果:
在这里插入图片描述

🎉 总结

本篇笔记介绍了C++中指针的定义与使用以及指针与数组的关系。学习了指针的引入、定义形式与方法、通过指针间接访问、指针的初始化、指针运算和指针的const限定。同时,也了解了数组的首地址、指向数组的指针变量以及通过指针访问数组的方法。

指针在C++中扮演着重要的角色,掌握指针的概念和使用方法将使你在处理复杂问题和优化程序时受益匪浅。通过不断练习和实践,你将能够灵活运用指针来解决实际问题。

希望本篇笔记对你的C++学习有所帮助。如果你有任何问题或疑惑,欢迎继续探索和提问。祝你学习愉快,编程进步!💪

⭐️希望本篇文章对你有所帮助。

⭐️如果你有任何问题或疑惑,请随时向提问。

⭐️感谢阅读!

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

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

相关文章

Android TextView 展示特殊字符高度变高问题解决

背景 #在我们的项目中&#xff0c;展示文字是很常见的需求&#xff0c;但是在线上展示中发现&#xff0c;有些信息是特殊字符展示的&#xff0c;而且这些字符的高度会导致TextView的高度变高&#xff08;与正常字符比&#xff09;。 效果如下&#xff1a; 很明显&#xff0…

森云+优控配置摄像头进行录像和拍照测试

森云和优控配置摄像头进行录像和拍照测试 现在其实已经基本上明确自己的环境了&#xff0c;就是在ubuntu下的pycharm和vscode&#xff0c;然后下载conda&#xff08;但是不要默认的base环境&#xff0c;只要conda create -n xxx 这样的基本功能就好了&#xff09; 显示opencv…

AI绘画StableDiffusion:云端在线版使用笔记分享(Kaggle版)

玩AI绘画&#xff08;SD&#xff09;&#xff0c;自己电脑配置不够&#xff1f;今天给大家介绍一下如何baipiao在线版AI绘画StableDiffusion。 Kaggle 是世界上最大的数据科学社区&#xff0c;拥有强大的工具和资源&#xff0c;可帮助您实现数据科学目标。&#xff08;每周可以…

【MySQL学习笔记】(六)MySQL基本查询

表的增删查改 1 create1.1 单行数据全列插入1.2 多行数据 指定列插入1.3 插入否则更新1.4 替换 2 retrieve2.1 select列2.1.1 全列查询2.2.2 指定列查询2.2.3 查询字段为表达式2.2.4 为查询结果指定别名2.2.5 结果去重 2.2 where 条件2.2.1 null的查询 2.3 结果排序2.4 筛选分…

如何搭建一个实时对话转录应用(类似zoom中的文本转录功能)并部署到 Heroku

文章目录 应用搭建Assembly AI文件夹结构前端搭建HTMLindex.js 后端搭建server.jspackage.json Heroku 部署创建账号创建Heroku应用上传仓库 应用搭建 应用基于 html javascript使用的第三方 API 是 Assembly AI 提供的 Assembly AI 要使用 real-time transcript 功能&…

ChatGPT:为教育创新提供五大机遇

随着智能技术的不断发展&#xff0c;ChatGPT在教育场景中的创新价值可能比我们能够意识到的还要多。比如它可以自动处理作业、在线答疑&#xff0c;可以辅助语言学习、实时沟通&#xff0c;甚至还可以用于评估诊断、科学研究。国内外关于利用ChatGPT实现教育创新的场景描绘已经…

【Matplotlib】多级雷达图绘制

一、实例1&#xff1a;个人能力画像雷达图 # -*- coding: utf-8 -*- """ Created on Sat Jul 1 20:52:54 2023author: zcq """import numpy as np import matplotlib.pyplot as plt import matplotlibmatplotlib.rcParams[font.family]SimHei …

灯夹三角架

2个卡箍1个无头螺丝拼1个灯夹 还需要1个三脚架固定 difference(){union(){translate([18,-7,0])cube([14,14,1]);translate([-7,18,40])cube([14,14,1]);translate([-7,-32,40])cube([14,14,1]);points [[7,-32,40], //0[18,-7,0], //1[18,7,0], //2[7,-18,40], //3[7,…

【C++面向对象】足球比赛数据统计系统(面向对象练习)

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、51CTO技术博主 &#x…

【IoT】硬件产品经理:从入门到精通(卫朋)

目录 介绍 出版过程 CSDN学院 下单方式 个人介绍 介绍 2023 年已经过去了一半。 作为阶段小目标&#xff0c;这本书也如期发布了。 先来看看封面&#xff0c;这里也要感谢编辑们的辛苦付出。 ​ 出版过程 出版本身其实是一件比较严肃的事情。 过去的一年多时间&#…

进程的基本概念解读

目录 什么是进程 PCB OS中用于管理控制的数据结构 进程控制块PCB的作用 进程控制块中的信息 前趋图 背景 作用 表示 示例 程序的顺序执行 程序顺序执行的特征 程序的并发执行 程序的并发执行的特征 例题解读 进程的三种基本状态 进程的三种状态之间的转换 进…

linux下RabbitMQ的使用

文章目录 linux下RabbitMQ的使用首先docker启动网页打开网址&#xff1a;用户名和密码登录创建exchanges:创建Queues增加Queues的Bind linux下RabbitMQ的使用 首先docker启动 su rootsudo docker run -d --hostname rabbitsvr --name rabbit -p 5672:5672 -p 15672:15672 -p …

Uniform的理解

Uniform&#xff1a;一种从Cpu的应用&#xff0c;向Gpu中的着色器发送数据的方式&#xff0c;它是全局的&#xff0c;可以被任意着色器程序在任意阶段访问。 若声明了一个Uniform却没用过&#xff0c;编译器会默认移除这个变量&#xff0c;导致编译出的版本并不包含它&#xff…

配置本地的application-dev.yml读取nacos上面的配置

我想配置本地的application-dev.yml读取nacos上面的配置&#xff0c;我应该在配置文件里怎么写&#xff1f;并且在nacos里怎么建立 在本地的application-dev.yml文件中&#xff0c;您可以使用Spring Cloud Nacos来读取Nacos上的配置。以下是在配置文件和Nacos中设置的步骤&…

servlet+JSP与SpringBoot+Vue项目交互——servlet访问Vue页面

问题 servletJSP与SpringBootVue项目交互——servlet访问Vue页面 详细问题 笔者前一段时间开发一个项目&#xff0c;使用的技术框架是servletJSP&#xff0c;现阶段开发的项目技术框架为SpringBootVue&#xff0c;笔者现在需要输入servletJSP的路由地址&#xff08;登录页面…

3DTiles Next研究

3DTiles Next是Cesium发布的下一代3DTiles规范。 元数据 在这一代规范中&#xff0c;更重视元数据&#xff08;metadata&#xff0c;如建筑物ID或者类型等&#xff09;&#xff0c;通过这些元数据可以对3dtiles进行样式调整或者过滤显示。 关于详细的元数据规范介绍看这里。 …

Spark SQL生产优化经验--任务参数配置模版

大表扫描 特殊case说明&#xff1a;当任务存在扫event_log表时需注意&#xff0c;若对event_log表进行了过滤&#xff0c;且过滤比很高&#xff0c;如下图的case&#xff0c;input为74T&#xff0c;但shuffle write仅为3.5G&#xff0c;那么建议提高单partition的读取数据量&a…

Redis数据库高可用之RDB和AOF持久化

Redis数据库高可用、RDB和AOF持久化、性能管理 一、Redis 高可用二、Redis 持久化Ⅰ、持久化的功能Ⅱ、两种持久化方式Ⅲ、RDB 和 AOF 的区别 三、RDB 持久化Ⅰ、触发条件Ⅱ、执行流程 四、AOF持久化Ⅰ、开启AOFⅡ、执行流程 五、RDB 和 AOF 的优缺点Ⅰ、RDB 持久化Ⅱ、AOF 持久…

金鹰优化算法,附MATLAB代码,直接复制

金鹰优化算法&#xff08;golden eagle optimizer, GEO&#xff09;是于2020年提出的新型智能优化算法&#xff0c;该算法建立于金鹰个体 捕食过程中的巡航和攻击行为之上&#xff0c;通过平衡两者关系&#xff0c;帮助函数寻找最优值&#xff0c;已经在许多方面得到了应用。 关…

Google 将为高端 Chromebook 推出独立品牌

说起 Chromebook&#xff0c;一般大家的第一印象就是价格便宜、配置不高、做工普通&#xff0c;所选的材料也都是以塑料为主&#xff0c;产品主打的市场也是学生和教育群体。在不少人看来&#xff0c;Chromebook 就是一个配备了功能齐全的浏览器&#xff0c;外加一定的文件管理…