当前位置: 首页 > news >正文

c++的指针完整教程

概述:C++的指针是一种特殊的变量,它存储的是另一个变量的内存地址。指针的使用可以让我们更高效地操作内存,实现动态内存分配等功能。

声明指针变量

要声明一个指针变量,需要在变量类型前加上星号(*)。例如,声明一个整型指针:

int *p;

初始化指针变量

指针变量可以在声明时进行初始化,也可以在声明后进行初始化。初始化指针变量时,需要将其指向一个已存在的变量或数组。例如:

int a = 10;
int *p = &a; // p指向变量a

访问指针指向的值

要访问指针指向的值,需要在指针变量前加上星号(*)。例如:

int a = 10;
int *p = &a;
cout << *p << endl; // 输出10

指针运算

指针支持加减运算,可以用来遍历数组或访问结构体成员。例如:

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

指针与函数

指针可以作为函数参数和返回值,可以实现函数间的数据共享和传递。例如:

void swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;
}int main() {int x = 10, y = 20;swap(&x, &y); // 交换x和y的值cout << x << " " << y << endl; // 输出20 10return 0;
}

动态内存分配

C++提供了newdelete操作符来动态分配和释放内存。例如:

int *createArray(int size) {int *arr = new int[size]; // 动态分配内存return arr;
}void deleteArray(int *arr) {delete[] arr; // 释放内存
}int main() {int size = 5;int *arr = createArray(size); // 创建大小为5的整数数组for (int i = 0; i < size; i++) {arr[i] = i + 1; // 给数组赋值}for (int i = 0; i < size; i++) {cout << arr[i] << " "; // 输出数组元素}cout << endl;deleteArray(arr); // 释放数组内存return 0;
}

C++中存在多种类型的指针,包括不同级别的指针和根据数据类型分类的指针。以下是对这些指针类型的具体介绍:

  • 按级别分类
  1. 一级指针:这是最基本的指针类型,它直接指向一个变量的地址。例如,int *p 表示一个指向整型变量的指针。
  2. 二级指针:这种指针指向的是另一个指针变量的地址,即它存储的是一级指针的地址。例如,int **pp 表示一个指向整型指针的指针。
  3. 三级指针:同理,三级指针存储的是二级指针的地址,以此类推,可以有更高级的指针。
  • 按数据类型分类
  1. 整型指针:使用 int * 表示,它指向一个整型变量的地址。
  2. 字符指针:使用 char * 表示,它指向一个字符变量的地址。字符指针常用于处理字符串。
  3. 数组指针:指向数组的指针,可以通过指针进行数组元素的访问和操作。
  4. 函数指针:指向函数的指针,可以用来调用函数或者作为参数传递给其他函数。
  5. 成员指针:指向类或结构体成员的指针,通常用于访问类或结构体中的成员变量或成员函数。
  6. void指针:通用指针类型,可以指向任何类型的数据,但需要显式转换才能进行解引用操作。

另外不同位数的机子,指针位数也不一样。32位机子的指针是4个字节,而64位机子则是8个字节

相关文章:

c++的指针完整教程

概述&#xff1a;C的指针是一种特殊的变量&#xff0c;它存储的是另一个变量的内存地址。指针的使用可以让我们更高效地操作内存&#xff0c;实现动态内存分配等功能。 声明指针变量 要声明一个指针变量&#xff0c;需要在变量类型前加上星号&#xff08;*&#xff09;。例如…...

WordPress前端如何使用跟后台一样的Dashicons图标字体?

很多站长都喜欢在站点菜单或其他地方添加一些图标字体&#xff0c;常用的就是添加Font Awesome 图标和阿里巴巴矢量库图标iconfont。其实我们使用的 WordPress 本身就有一套管理员使用的官方图标字体 Dashicons&#xff0c;登录我们站点后台就能看到这些图标字体。那么有没有可…...

redisson实现延迟队列

1.pom引入redisson <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.20.1</version></dependency>整合springboot配置&#xff0c;这个可以参考之前整合redisson的文章&#xff0c;…...

【教程】N2N V3内网穿透、异地组网,包括Win/Linux/Android,包括不同内网实现adb远程连接

目录 一、背景 二、Linux 配置 并运行 N2N - Supernode (必选) 三、Linux -- 配置 并运行 N2N - 边缘节点配置 Edge(可选步骤) 四、Windows -- 配置 并运行 N2N - 边缘节点配置 Edge (可选步骤) (一)配置 TAP 虚拟网卡 (二)配置 N...

JavaAPI常用类01

目录 概述 Object类 Object类_toString() 代码展示 重写toString()方法前后输出 Object类_equals() 代码展示 重写equals()方法前后输出对比 Arrays类 equals()方法 Binary Search&#xff08;二分查找&#xff09; copyOf()方法 sort()方法 了解sort()方法 进阶…...

在 where子句中使用子查询(二)

目录 ANY ANY &#xff1a;功能上与 IN 是没有任何区别的 >ANY &#xff1a;比子查询返回的最小值要大 ALL >AL &#xff1a;比子查询返回的最大值要大 EXISTS() 判断 NOT EXISTS Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209…...

TongWEB(东方通),部署WEB前后端项目步骤

我的系统: 银河麒麟桌面系统V10(SP1)(兆芯) 环境需要搭建好,什么redis,数据库等 1.准备项目前端war包 (我后端项目本就是war部署,jar转war自行百度一下吧) 进入前端打包好的dist文件夹,创建一个文件夹 WEB-INF ,再在 WEB-INF 里创建一个 web.xml 文件,文件内容: <web-…...

Vue中如何使用dayjs

Day.js中文网Day.js是一个极简的JavaScript库&#xff0c;可以为现代浏览器解析、验证、操作和显示日期和时间。https://dayjs.fenxianglu.cn/ 单位不区别大小写&#xff0c;支持复数和缩写形式 单位缩写描述 date D日期 [1,31]dayd星期 [0,6]&#xff08;星期日0&#xff0c…...

数据库-MySQL

建立索引 mysql 添加索引的三种方法 - krt-wanyi - 博客园 (cnblogs.com) 跨库联表查询 MySQL不同数据库不同表连表查询&#xff08;跨库连表查询&#xff09;-CSDN博客 关于微服务跨数据库联合查询的一些解决思路_微服务跨库联表查询-CSDN博客 同一个连接不同数据库前缀 …...

C语言每日一题(61)盛最多水的容器

题目链接 力扣 11 盛最多水的容器 题目描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水…...

uni-app 经验分享,从入门到离职(四)——页面栈以及页面跳转的 API(开发经验总结)

文章目录 &#x1f4cb;前言⏬关于专栏 &#x1f3af;什么是页面栈&#x1f9e9;页面跳转方法&#x1f4cc; uni.navigateTo(OBJECT)&#x1f4cc; uni.redirectTo(OBJECT)&#x1f4cc; uni.reLaunch(OBJECT)&#x1f4cc; uni.switchTab(OBJECT)&#x1f4cc; uni.navigateBa…...

Go Module常用命令

Go Module常用命令TOC Go Module常用命令 go mod init #初始化go.mod go mod tidy #更新依赖文件 go mod download #下载依赖文件 go mod vendor #将依赖转移至本地的vendor文件 go mod edit #手…...

ubuntu压缩和解压

-c 创建 -x 解压 -v 显示过程 -f 文件名 xz格式 tar -tf arm-linux-gnueabi-5.4.0.tar.xz 查看压缩包的内容 tar -xf arm-linux-gnueabi-5.4.0.tar.xz -C / 解压 gz格式 t…...

华为HCIP Datacom H12-831 卷24

多选题 1、如图所示&#xff0c;某园区部署OSPF实现网络互通&#xff0c;其中Area1部署为NSSA区域。某工程师为了实现R1访问R4的环回口地址&#xff0c;在R4的OSPF进程中引入直连路由。以下关于该场景的描述,错误的有哪些项? A、在R4引入直连路由后&#xff0c;R1通过转换后的…...

react + Typescript 中 react有多少内置的类型 分别是什么

react Typescript 中 react有多少内置的类型 分别是什么 React 和 TypeScript 结合使用时&#xff0c;React 提供了一系列的内置类型&#xff08;也称为类型定义或类型别名&#xff09;来帮助你在 TypeScript 中编写类型安全的代码。这些类型定义涵盖了 React 的各个方面&…...

harbor(docker仓库)仓库部署 - 高可用

harbor&#xff08;docker仓库&#xff09;仓库部署 - 高可用 1. harbor高可用1.1 方案说明1. 双主复制2. 多harbor实例共享后端存储 1.2 部署高可用&#xff08;多harbor实例共享后端存储&#xff09;1. 服务器划分2. 安装harbor&#xff08;先部署一套Harbor&#xff0c;用于…...

题目 1262: 邮局选址问题

题目描述: 在一个按照东西和南北方向划分成规整街区的城市里&#xff0c;n个居民点散乱地分布在不同的街区中。用x 坐标表示东西向&#xff0c;用y坐标表示南北向。各居民点的位置可以由坐标(x,y)表示。街区中任意2 点(x1,y1)和(x2,y2)之间的距离可以用数值|x1-x2||y1-y2|度量…...

内核内存回收关键隐藏变量之page引用计数

在分析内核内存回收源码时&#xff0c;page引用计数并不显眼&#xff0c;但是page引用计数对page的内存回收至关重要。本文基于linux-4.18.0-240版本内核源码&#xff0c;总结下文件页page的引用计数的相关细节。首先是get_page()和put_page()函数&#xff0c;分别令page引用计…...

数据结构---链表的基本操作

头插法遍历链表尾插法头删法尾删法按位置插入数据按位置删除数据直接插入排序 链表翻转快慢指针 linklist.c #include <stdio.h> #include <stdlib.h> #include "./linklist.h"linklist* create_linklist(void) {linklist* head (linklist*)malloc(siz…...

异步框架Celery在Django中的运用

参考博客&#xff1a;https://www.cnblogs.com/pyedu/p/12461819.html 参考视频&#xff1a;01 celery的工作机制_哔哩哔哩_bilibili 定义&#xff1a;简单灵活、处理大量消息的分布式系统&#xff0c;专注于实时处理异步队列&#xff0c;支持任务调度 主要架构&#xff1a; …...

NCCL中RoCE与RDMA的深度解析:如何优化分布式训练网络性能

1. 为什么RoCE和RDMA对分布式训练如此重要&#xff1f; 第一次接触分布式训练时&#xff0c;我盯着日志里不断跳动的通信耗时直发愁。8块GPU明明都在满负荷运转&#xff0c;但总训练时间就是比单卡8要长不少。后来用NVIDIA的Nsight工具一分析&#xff0c;发现超过30%的时间都花…...

OpenCVSharp摄像头开发避坑指南:C#实现高清录像+实时滤镜(WinForm版)

OpenCVSharp工业级摄像头开发实战&#xff1a;高清录像与实时滤镜的进阶技巧 在工业视觉检测和实时直播领域&#xff0c;稳定高效地采集视频流是核心需求。C#开发者常选择OpenCVSharp作为计算机视觉开发工具&#xff0c;但实际应用中总会遇到帧率不稳定、资源泄漏或参数配置不当…...

RMBG-2.0在YOLOv8项目中的应用:目标检测与背景去除联合处理

RMBG-2.0在YOLOv8项目中的应用&#xff1a;目标检测与背景去除联合处理 1. 为什么需要把目标检测和背景去除连在一起做 你有没有遇到过这样的场景&#xff1a;电商团队要批量处理上千张商品图&#xff0c;先用YOLOv8框出产品位置&#xff0c;再手动抠图换背景&#xff0c;最后…...

突破语言壁垒:Unity游戏翻译破局工具如何重构跨文化体验

突破语言壁垒&#xff1a;Unity游戏翻译破局工具如何重构跨文化体验 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 当你满怀期待地启动一款国际热门Unity游戏&#xff0c;却被满屏陌生文字阻挡了探索脚步…...

手把手教你为OpenBMC (AST2600平台) 正确配置PCA9545 I2C Switch的DTS节点

深入解析AST2600平台PCA9545 I2C Switch设备树配置实战指南 在嵌入式系统开发中&#xff0c;I2C总线扩展是连接多个外设的常见需求。NXP的PCA9545作为一款4通道I2C总线开关芯片&#xff0c;能够有效解决I2C地址冲突问题&#xff0c;但在实际应用中&#xff0c;设备树(DTS)配置…...

Thorium浏览器:重新定义Chromium性能的颠覆性优化方案

Thorium浏览器&#xff1a;重新定义Chromium性能的颠覆性优化方案 【免费下载链接】thorium Chromium fork named after radioactive element No. 90. Windows and MacOS/Raspi/Android/Special builds are in different repositories, links are towards the top of the READM…...

霜儿-汉服-造相Z-Turbo模型推理优化:理解与避免神经网络中的耦合过度

霜儿-汉服-造相Z-Turbo模型推理优化&#xff1a;理解与避免神经网络中的耦合过度 不知道你有没有遇到过这种情况&#xff1a;想让AI画一个穿汉服的女孩&#xff0c;结果出来的图&#xff0c;发型和衣服总是一起“跑偏”。比如&#xff0c;你想生成一个“唐代齐胸襦裙”的造型&…...

n600高效涡流选粉机设计【说明书 CAD图纸 开题报告 任务书 实习报告】

n600高效涡流选粉机作为粉体分级领域的核心设备&#xff0c;其设计聚焦于提升分级精度与处理效率。该设备通过优化涡流场分布与颗粒运动轨迹&#xff0c;实现微细粉体的高效分离。其核心作用在于利用离心力和气流的复合作用&#xff0c;使不同粒径的颗粒在旋转流场中产生差异化…...

驯服中点电位:I型NPC三电平逆变器离网系统建模与动态平衡策略

1. I型NPC三电平逆变器的中点电位难题 搞电力电子的兄弟们都知道&#xff0c;中点钳位型&#xff08;NPC&#xff09;三电平逆变器有个让人又爱又恨的特点——中点电位漂移。这就像你骑自行车时突然发现车把不听使唤&#xff0c;明明直线行驶却总往一边偏。在离网系统中&#x…...

科哥二次开发Image-to-Video:性能提升39%,小白友好度大增

科哥二次开发Image-to-Video&#xff1a;性能提升39%&#xff0c;小白友好度大增 1. 项目背景与核心价值 Image-to-Video技术正在改变内容创作的方式&#xff0c;它能够将静态图片转化为生动的视频内容。然而&#xff0c;原始I2VGen-XL模型在实际应用中面临两大挑战&#xff…...