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

浅谈C++之指针

一、基本介绍

        在C++中,指针是一种复杂的数据类型,它存储了另一个变量的内存地址。通过指针,程序可以直接访问和操作内存,这为编程提供了极大的灵活性和效率,但同时也增加了复杂性和潜在的错误风险。

二、指针的概念

指针变量:存储另一个变量的内存地址。

地址:内存中每个字节都有一个唯一的地址。

引用:通过指针访问或操作存储在内存地址上的数据。

三、指针的声明

指针的声明需要指定指针的类型和所指向的变量的类型。

int *ptr; // ptr是指向int类型的指针
double *dptr; // dptr是指向double类型的指针
char *cptr; // cptr是指向char类型的指针

指针的初始化

指针变量必须被初始化,否则它将包含一个随机的内存地址。

int var = 10;
int *ptr = &var; // ptr现在指向var的地址

指针的解引用

使用*操作符来解引用指针,获取指针指向的值。

int var = 10;
int *ptr = &var;
int value = *ptr; // value现在是10

指针的算术运算

指针可以进行加法和减法运算,但这些运算通常用于数组。

int arr[5] = {1, 2, 3, 4, 5};
int *ptr = arr;
int value = *(ptr + 2); // value是3,即arr[2]

指针与数组

数组名在大多数情况下被解释为指向数组首元素的指针。

int arr[5] = {1, 2, 3, 4, 5};
int *ptr = arr; // ptr指向数组的第一个元素

指针与函数

指针可以用于函数参数和返回值,以实现对数据的直接访问。

传递指针到函数

void increment(int *ptr) {(*ptr)++;
}int main() {int value = 5;increment(&value);std::cout << value; // 输出6return 0;
}

从函数返回指针

int* create_int(int val) {int *ptr = new int;*ptr = val;return ptr;
}int main() {int *my_int = create_int(10);std::cout << *my_int; // 输出10delete my_int; // 释放内存return 0;
}

指针与动态内存分配

使用newdelete操作符来动态分配和释放内存。

int *ptr = new int; // 分配一个int大小的内存
*ptr = 10;
std::cout << *ptr; // 输出10
delete ptr; // 释放内存

指针的指针

指针的指针是指向另一个指针的指针

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

空指针

在C++11中,可以使用nullptr来表示空指针。

int *ptr = nullptr;

指针类型转换

使用static_castreinterpret_cast来进行指针类型转换。

int *ip;
double *dp = static_cast<double*>(ip); // 错误的转换,但语法上是允许的

相关文章:

浅谈C++之指针

一、基本介绍 在C中&#xff0c;指针是一种复杂的数据类型&#xff0c;它存储了另一个变量的内存地址。通过指针&#xff0c;程序可以直接访问和操作内存&#xff0c;这为编程提供了极大的灵活性和效率&#xff0c;但同时也增加了复杂性和潜在的错误风险。 二、指针的概念 指针…...

在虚幻引擎中实时显示帧率

引擎自带了显示帧率的功能 但是只能在编辑器中显示 , 在游戏发布后就没有了 , 所以我们要自己做一个 创建一个控件蓝图 创建画布和文本 , 修改文本 文本绑定函数 , 点击创建绑定 添加一个名为 FPS 的变量 格式化文本 用大括号把变量包起来 {FPS Int} FPS 然后转到事件图表…...

Apache Iceberg构建高性能数据湖

1. 概述 大数据时代的挑战 随着信息技术和互联网的迅猛发展&#xff0c;我们正处于一个数据爆炸的时代。企业和组织每天都在生成和收集海量的数据&#xff0c;这些数据来自于社交媒体、物联网设备、传感器、交易系统等各种来源。如何高效地存储、管理和分析这些庞大的数据集&…...

【图像压缩与重构】基于标准+改进BP神经网络

课题名称&#xff1a;基于标准改进BP神经网络的图像压缩与重构&#xff08;带GUI) 代码获取方式(付费&#xff09;&#xff1a; 相关资料&#xff1a; 1. 代码注释 2.BP神经网络原理文档资料 3.图像压缩原理文档资料 程序实例截图&#xff1a; 1. 基于标准BP神经网络的图…...

函数式编程(以Python编程语言为例)介绍

函数式编程&#xff08;以Python编程语言为例&#xff09;介绍 何为函数式编程&#xff1f; 函数式编程&#xff08;Functional Programming&#xff09;&#xff0c;不要误以为就是用函数编程。函数式编程确实涉及使用函数&#xff0c;但它不仅仅是“用函数编程”那么简单。 …...

银河麒麟操作系统中查看动态库函数的方法

银河麒麟操作系统中查看动态库函数的方法 1、查看单个动态库中的函数2、查找特定函数位于哪个动态库中 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在Linux系统&#xff0c;包括银河麒麟操作系统中&#xff0c;动态库&#xff08;.so文件…...

开放麒麟openkylin

开源社区&#xff1a; openKylin: openKylin 社区的愿景是&#xff1a;在开源、自愿、平等和协作的基础上&#xff0c;由基础软硬件企业、非营利性组织、社团组织、高等院校、科研机构和个人开发者共同创立的一个开源社区。 下载地址&#xff1a; openKylin开源操作系统 安…...

用Python与OpenCV的实践:实时面部对称性分析

目录 思路分析 整体代码 效果展示 总结 在当今计算机视觉领域&#xff0c;人脸识别和分析技术得到了广泛应用。无论是安全验证、社交媒体应用&#xff0c;还是美学研究&#xff0c;人脸特征的提取和分析都是关键技术之一。在这篇博客中&#xff0c;我们将深入探讨一个有趣的…...

第三十三章 使用派生密钥令牌进行加密和签名 - 使用 DerivedKeyToken _进行加密(一)

文章目录 第三十三章 使用派生密钥令牌进行加密和签名 - 使用 <DerivedKeyToken> 第三十三章 使用派生密钥令牌进行加密和签名 - 使用 进行加密&#xff08;一&#xff09; 如果加密了任何安全标头元素&#xff0c;请将它们添加到 WS-Security 标头元素中。为此&#…...

Structure-Aware Transformer for Graph Representation Learning

Structure-Aware Transformer for Graph Representation Learning&#xff08;ICML22&#xff09; 摘要 Transformer 架构最近在图表示学习中受到越来越多的关注&#xff0c;因为它通过避免严格的结构归纳偏差而仅通过位置编码对图结构进行编码&#xff0c;自然地克服了图神经…...

滚动页面,el-table表头始终置顶

效果如下&#xff1a; 起始状态&#xff1a; 滚动后&#xff1a; 代码地址&#xff1a;代码地址-面包多...

Mac使用gradle编译springboot-2.7.x源码

1 开发环境&#xff1a; JDK8 ideaIU-2024.2.2 gradle-7.6.3 代理网络 2 下载springboot源码 代码仓库网址 git clone -b 2.7.x https://github.com/spring-projects/spring-boot.git3 安装gradle gradle下载网址 https://services.gradle.org/distributions/ 安装此文件指…...

MySQL --索引(下)

文章目录 6.索引操作6.1 创建主键索引6.2 创建唯一索引6.3 创建普通索引6.4 创建全文索引6.5 查询索引6.6 删除索引6.7 索引创建原则6.8 复合索引6.9 索引最左匹配原则6.10 索引覆盖 6.索引操作 6.1 创建主键索引 第一种方式&#xff1a; – 在创建表的时候&#xff0c;直接…...

选择寄宿学校,给自闭症孩子一个温暖的第二家

在寻找适合自闭症孩子成长的道路上&#xff0c;每一个家庭都充满了艰辛与希望。而广州市星贝育园康复中心&#xff0c;以其独特的全托寄宿制教育模式&#xff0c;为这些特殊的孩子提供了一个充满爱与关怀的“第二家”。在这里&#xff0c;孩子们不仅能够得到专业的康复训练&…...

大模型训练:K8s 环境中数千节点存储最佳实践

今天这篇博客来自全栈工程师朱唯唯&#xff0c;她在前不久举办的 KubeCon 中国大会上进行了该主题分享。 Kubernetes 已经成为事实的应用编排标准&#xff0c;越来越多的应用在不断的向云原生靠拢。与此同时&#xff0c;人工智能技术的迅速发展&#xff0c;尤其是大型语言模型&…...

【Linux学习】1-2 新建虚拟机ubuntu环境

1.双击打开VMware软件&#xff0c;点击“创建新的虚拟机”&#xff0c;在弹出的中选择“自定义&#xff08;高级&#xff09;” 2.点击下一步&#xff0c;自动识别ubuntu光盘映像文件&#xff0c;也可以点击“浏览”手动选择&#xff0c;点击下一步 3.设置名称及密码后&#xf…...

ftdi_sio驱动学习笔记 3 - 端口操作

目录 1. ftdi_port_probe 1.1 私有数据结构ftdi_private 1.2 特殊probe处理 1.3 确定FTDI设备类型 1.4 确定最大数据包大小 1.5 设置读取延迟时间 1.6 初始化GPIO 1.6.1 使能GPIO 1.6.2 添加到系统 1.6.2.1 设置GPIO控制器的基本信息 1.6.2.2 设置GPIO控制器的元信息…...

[leetcode]39_组合总和_给定数组且数组可重复

给定一个无重复元素的数组 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。说明&#xff1a; 所有数字&#xff08;包括 target&#xff09;都是正整数。 解集不能包含重复的组合…...

【笔记】第三节 组织与性能

3.1 基本成分 3.2 微观组织特征 0.6-0.8C%碳素钢的组织为珠光体和少量的铁素体。 如何把组织和性能联系起来&#xff1f;德国克虏伯公司的研究——珠光体片间距与渗碳体片层厚度成比例&#xff1a; t s 0 ( ρ 15 ( C % ) − 1 ) ts_0(\frac{\rho}{15(C\%)}-1) ts0​(15(C%)…...

数据库——sql语言学习 查找语句

一、什么是sql SQL是结构化查询语言&#xff08;Structured Query Language&#xff09;的缩写&#xff0c;它是一种专门为数据库设计的操作命令集&#xff0c;用于管理关系数据库管理系统&#xff08;RDBMS&#xff09;。 二、查找相关语句 ‌‌首先&#xff0c;我们已经设…...

实战解析:如何通过显卡频率优化解决CUDA/TensorRT推理速度骤降问题

1. 从异常现象到问题定位 最近在部署一个基于YOLOv5的工业检测系统时&#xff0c;遇到了一个让人头疼的问题&#xff1a;当系统从连续检测模式切换到条件触发模式后&#xff0c;原本飞快的CUDA推理速度突然下降了近5倍。更诡异的是&#xff0c;降低相机帧率后&#xff0c;推理…...

OSINT自动化平台ClawShield:模块化架构与安全运营实战解析

1. 项目概述&#xff1a;一个面向安全运营的公开情报收集与分析平台最近在整理自己的开源项目收藏夹&#xff0c;发现一个挺有意思的仓库&#xff0c;叫SleuthCo/clawshield-public。乍一看这个名字&#xff0c;“ClawShield”&#xff0c;爪子与盾牌&#xff0c;就透着一股子攻…...

告别混乱信号!用CANdb++ Editor从零搭建汽车CAN网络DBC文件(保姆级图文教程)

告别混乱信号&#xff01;用CANdb Editor从零搭建汽车CAN网络DBC文件&#xff08;保姆级图文教程&#xff09; 在汽车电子开发领域&#xff0c;CAN总线如同神经脉络般贯穿整车系统。我曾参与过一个新能源整车项目&#xff0c;由于早期缺乏规范的DBC文件&#xff0c;不同ECU厂商…...

如何3步免费解锁WeMod专业版:2026年终极增强工具使用指南

如何3步免费解锁WeMod专业版&#xff1a;2026年终极增强工具使用指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 还在为WeMod专业版的订阅费用而犹豫…...

地下态势智能研判,拔高硐室深部安全透明管控等级技术白皮书

地下态势智能研判&#xff0c;拔高硐室深部安全透明管控等级技术白皮书 副标题&#xff1a;全要素三维动态重建井下场景&#xff0c;融合井下无感坐标解算、跨断面跨镜轨迹串联、身体指纹人员轨迹存档&#xff0c;井下风险前置感知、动态全程透明追溯 前言 矿山井下深部硐室与纵…...

PowerInfer:基于热点神经元预测的LLM高性能推理引擎部署指南

1. 项目概述&#xff1a;当推理速度成为AI落地的瓶颈最近在折腾本地大模型推理的朋友&#xff0c;估计都绕不开一个核心痛点&#xff1a;速度。模型效果再好&#xff0c;生成一句话要等上十几秒&#xff0c;那种“卡顿感”足以劝退绝大多数想把它集成到实际应用里的开发者。我自…...

Rulebook-AI:用规则引擎为AI智能体构建可控决策框架

1. 项目概述&#xff1a;一个基于规则的AI智能体框架最近在探索如何让AI智能体&#xff08;Agent&#xff09;的行为更可控、更符合业务逻辑时&#xff0c;我遇到了一个挺有意思的开源项目&#xff1a;botingw/rulebook-ai。乍一看这个名字&#xff0c;可能会觉得它又是一个试图…...

人性最残忍的真相是:你越不把自己当回事,别人就越不把你当回事

那个总给别人买贵东西的人,最后都怎么样了? 目录 那个总给别人买贵东西的人,最后都怎么样了? 我们为什么会忍不住过度付出? 真正的爱,从来都不是单方面的牺牲 爱自己,是所有健康关系的前提 昨天刷到一句话,瞬间戳中了我:“永远不要拿自己辛苦钱,去给别人买自己都舍不…...

基于Rust与Candle的AI推理引擎cria:简化大模型本地部署与优化

1. 项目概述&#xff1a;从“左移”到“创造”的AI推理引擎 最近在折腾AI模型本地部署和推理优化的朋友&#xff0c;可能都绕不开一个名字&#xff1a; cria 。这个由 leftmove 开源的项目&#xff0c;全称是“Cria: The AI Inference Engine”&#xff0c;直译过来就是“创…...

用C++和RealSense D435i搞个3D手势识别?从像素坐标到相机坐标的保姆级避坑指南

3D手势识别实战&#xff1a;用RealSense D435i实现像素到相机坐标的高精度转换 当你的手指在空气中划出一道弧线&#xff0c;计算机能否精准捕捉这个三维动作&#xff1f;这正是3D手势识别技术试图解决的问题。作为人机交互领域的前沿方向&#xff0c;3D手势识别正在VR游戏、医…...