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

深入解读C++中的指针变量

针变量是一种特殊的变量它和以前学过的其他类型的变量的不同之处是用它来指向另一个变量。为了表示指针变量和它所指向的变量之间的联系在C中用“*”符号表示指向例如i_pointer是一个指针变量而*i_pointer表示i_pointer所指向的变量。下面两个语句作用相同12i3;*i_pointer3;定义指针变量C规定所有变量在使用前必须先定义即指定其类型。在编译时按变量类型分配存储空间。对指针变量必须将它定义为指针类型。先看一个具体例子12inti, j;//定义整型变量ijint*pointer_1, *pointer_2;//定义指针变量*pointer_1*pointer_2第2行开头的int是指所定义的指针变量是指向整型数据的指针变量。也就是说指针变量pointer_1和pointer_2只能用来指向整型数据(例如i和j)而不能指向浮点型变量a和b。这个int就是指针变量的基类型。指针变量的基类型用来指定该指针变量可以指向的变量的类型。定义指针变量的一般形式为基类型 *指针变量名;下面都是合法的定义:12float*pointer_3;// pointer_3是指向单精度型数据的指针变量char*pointer_4;// pointer_4是指向字符型数据的指针变量请注意指针变量名是pointer_3和pointer_4而不是*pointer_3和*pointer_4即“*”不是指针变量名的一部分在定义变量时在变量名前加一个“*”表示该变量是指针变量。那么怎样使一个指针变量指向另一个变量呢只需要把被指向的变量的地址赋给指针变量即可。例如12pointer_1i;//将变量i的地址存放到指针变量pointer_1中pointer_2j;//将变量j的地址存放到指针变量pointer_2中这样pointer_1就指向了变量ipointer_2就指向了变量j。见图。一般的C编译系统为每一个指针变量分配4个字节的存储单元用来存放变量的地址。在定义指针变量时要注意不能用一个整数给一个指针变量赋初值在定义指针变量时必须指定基类型。引用指针变量有两个与指针变量有关的运算符取地址运算符。*指针运算符(或称间接访问运算符)。例如a为变量a的地址*p为指针变量p所指向的存储单元。【例】通过指针变量访问整型变量。12345678910111213#include iostreamusingnamespacestd;intmain( ){inta,b;//定义整型变量a,bint*pointer_1,*pointer_2;//定义指针变量*pointer_1,*pointer_2a100;b10;//对a,b赋值pointer_1a;//把变量a的地址赋给pointer_1pointer_2b;//把变量a的地址赋给pointer_2couta bendl;//输出a和b的值cout*pointer_1 *pointer_2endl;//输出*pointer_1和*pointer_2的值return0;}运行结果为12100 10 (a和b的值)100 10 (*pointer_1和*pointer_2的值)请对照图分析。下面对“”和“*”运算符再做些说明1) 如果已执行了“pointer_1a;”语句请问*pointer_1的含义是什么“”和“*”两个运算符的优先级别相同但按自右至左方向结合因此先进行*pointer_1的运算它就是变量a再执行运算。因此*pointer_1与a相同即变量a的地址。如果有pointer_2*pointer_1;它的作用是将a(a的地址)赋给pointer_2如果pointer_2原来指向b经过重新赋值后它已不再指向b了而也指向了a。2) *a的含义是什么先进行a的运算得a的地址再进行*运算即a所指向的变量*a和*pointer_1的作用是一样的(假设已执行了“pointer_1a;”)它们等价于变量a。即*a与a等价见图。【例】输入a和b两个整数按先大后小的顺序输出a和b用指针变量处理。解此题的思路是设两个指针变量p1和p2使它们分别指向a和b。使p1指向a和b中的大者p2指向小者顺序输出*p1*p2就实现了按先大后小的顺序输出a和b。按此思路编写程序如下12345678910111213141516#include iostreamusingnamespacestd;intmain( ){int*p1,*p2,*p,a,b;cinab;//输入两个整数p1a;//使p1指向ap2b;//使p2指向bif(ab)//如果ab就使p1与p2的值交换{pp1;p1p2;p2p;//将p1的指向与p2的指向交换}coutaa bbendl;coutmax*p1 min*p2endl;return0;}运行情况如下:1234578↙a45 b78max78 min45输入a的值45b的值78由于ab将p1的值和p2的值交换即将p1的指向与p2的指向交换。

相关文章:

深入解读C++中的指针变量

针变量是一种特殊的变量,它和以前学过的其他类型的变量的不同之处是:用它来指向另一个变量。为了表示指针变量和它所指向的变量之间的联系,在C中用“*”符号表示指向,例如,i_pointer是一个指针变量,而*i_po…...

基于Simulink的燃料电池-锂电池混合动力能量流管理​

目录 手把手教你学Simulink——基于Simulink的燃料电池-锂电池混合动力能量流管理​ 摘要​ 一、背景与挑战​ 1.1 为什么1+1<2?揭秘多能源系统的“木桶效应”​ 1.2 核心痛点与设计目标​ 二、系统架构与核心控制推导​ 2.1 整体架构:从“各自为战”到“黄金搭档”…...

白沟全屋定制厂家哪家好

想找白沟靠谱的全屋定制厂家&#xff1f;选不好可就掉坑里了。我之前装修就踩过雷&#xff0c;找的小厂家&#xff0c;板材质量差&#xff0c;设计也不合理&#xff0c;入住没多久就出问题。后来我做了很多功课&#xff0c;重新选了宁创全屋定制&#xff0c;效果非常满意。选全…...

告别断电丢时!手把手教你为RK3568开发板配置外置RTC(PCF8563T)并设置开机自动同步

RK3568开发板外置RTC配置实战&#xff1a;从硬件连接到系统集成 在工业控制、物联网网关和边缘计算设备中&#xff0c;精确的时间同步往往关系到整个系统的可靠性。RK3568作为一款高性能嵌入式处理器&#xff0c;虽然内置了RTC模块&#xff0c;但在需要更高精度或更长断电保持的…...

如何实现Gofile高速下载:多线程文件传输的终极解决方案

如何实现Gofile高速下载&#xff1a;多线程文件传输的终极解决方案 【免费下载链接】gofile-downloader Download files from https://gofile.io 项目地址: https://gitcode.com/gh_mirrors/go/gofile-downloader 你是否曾经因为Gofile下载速度缓慢而感到沮丧&#xff1…...

如何在5分钟内为Unity游戏添加自动翻译:XUnity.AutoTranslator完整指南

如何在5分钟内为Unity游戏添加自动翻译&#xff1a;XUnity.AutoTranslator完整指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾经因为语言障碍而错过了精彩的Unity游戏&#xff1f;面对日文、…...

BPSK调制中的相位旋转与ISI实现差分隐私

1. BPSK调制中的相位旋转与ISI实现差分隐私&#xff1a;原理与实现在物联网和联邦学习等分布式系统中&#xff0c;数据隐私保护正面临前所未有的挑战。传统差分隐私(DP)机制依赖人工噪声注入&#xff0c;往往带来额外的能耗和通信开销。而最新研究表明&#xff0c;BPSK调制中的…...

.NET 9云原生落地实践(2024年Q3最新Gartner验证架构):Service Mesh集成+自动扩缩容+可观测性闭环

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;.NET 9云原生容器化部署概览 .NET 9 正式引入对云原生场景的深度原生支持&#xff0c;包括更轻量的运行时裁剪、内置 OpenTelemetry 指标导出、Kubernetes 原生健康检查端点&#xff08;/healthz 和 /r…...

video-subtitle-extractor:本地AI字幕提取终极方案深度解析

video-subtitle-extractor&#xff1a;本地AI字幕提取终极方案深度解析 【免费下载链接】video-subtitle-extractor 视频硬字幕提取&#xff0c;生成srt文件。无需申请第三方API&#xff0c;本地实现文本识别。基于深度学习的视频字幕提取框架&#xff0c;包含字幕区域检测、字…...

Cursor破解工具深度解析:如何实现永久免费使用AI编程助手的技术奥秘

Cursor破解工具深度解析&#xff1a;如何实现永久免费使用AI编程助手的技术奥秘 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve rea…...

2026年,呼和浩特市唯一专业疗愈茶空间,究竟有何独特魅力?

在呼和浩特这座繁华都市&#xff0c;车水马龙、人来人往&#xff0c;高知、高收入、高审美的我们&#xff0c;每天都在社交、工作的漩涡里打转。职场的竞争压力、复杂的人际关系&#xff0c;让我们的内心疲惫不堪&#xff0c;情绪内耗严重&#xff0c;就像在茫茫大海中漂泊的船…...

COT-FM框架:机器人策略优化的条件最优传输方法

1. COT-FM框架概述&#xff1a;机器人策略优化的新范式 在机器人控制领域&#xff0c;策略优化一直面临着样本效率低、泛化能力差等核心挑战。COT-FM&#xff08;Conditional Optimal Transport-Flow Matching&#xff09;框架的提出&#xff0c;为这一领域带来了全新的解决思路…...

贪心算法:经典题目与证明

贪心算法&#xff1a;经典题目与证明 贪心算法因其简洁高效的特点&#xff0c;在解决优化问题时备受青睐。它通过每一步的局部最优选择&#xff0c;试图达到全局最优解。虽然并非所有问题都适用&#xff0c;但许多经典问题如背包问题、活动选择问题等&#xff0c;都能通过贪心…...

CodePercept:多模态AI在STEM视觉任务中的代码增强理解

1. 项目背景与核心价值CodePercept这个项目名本身就揭示了它的双重基因——"Code"代表编程能力&#xff0c;"Percept"暗示感知增强。作为一名长期关注AI工程化落地的开发者&#xff0c;我第一次看到这个标题就意识到&#xff1a;这可能是解决传统计算机视觉…...

大数据处理框架入门

大数据处理框架入门&#xff1a;解锁数据洪流的钥匙 在信息爆炸的时代&#xff0c;每天产生的数据量以ZB级增长&#xff0c;传统工具已难以应对。大数据处理框架应运而生&#xff0c;成为挖掘数据价值的核心工具。无论是企业决策、科学研究还是智能应用&#xff0c;掌握这些框…...

CodePercept:代码增强多模态模型在工业视觉中的应用

1. 项目背景与核心价值 去年在开发一个工业质检系统时&#xff0c;我发现传统CV模型对复杂缺陷的识别率始终卡在87%左右难以突破。当时尝试了各种数据增强和模型微调手段&#xff0c;直到偶然将代码逻辑作为辅助输入喂给视觉模型&#xff0c;准确率突然跃升到93.5%。这个意外发…...

技术赎罪券交易:软件测试从业者的专业实践与未来展望

在软件开发的复杂生态中&#xff0c;每一行代码都可能潜藏缺陷——这些“代码原罪”源于人为失误、需求漂移或技术债务积累。2026年&#xff0c;全球因代码错误导致的系统崩溃事件年增长率高达15%&#xff0c;尤其在金融和医疗领域&#xff0c;后果往往是灾难性的。作为软件测试…...

量子计算与可视化技术融合的前沿探索

1. 量子计算与可视化&#xff1a;当两种前沿技术相遇作为一名长期从事科学可视化研究的工程师&#xff0c;我见证了GPU如何彻底改变图形处理领域。如今&#xff0c;量子计算(QC)正在引发类似的变革讨论。但与GPU不同&#xff0c;量子计算机不是简单的"更快处理器"&am…...

时间序列预测中的功率变换技术与实战应用

## 1. 时间序列预测中的功率变换核心价值当我在2015年第一次尝试预测某电商平台的节日销量时&#xff0c;发现传统ARIMA模型在原始数据上表现糟糕。直到将销售额数据取对数后&#xff0c;预测准确率突然提升了37%。这个经历让我深刻认识到功率变换在时间序列分析中的魔法般的作…...

智慧树学习辅助插件:3分钟实现视频学习自动化 ⚡

智慧树学习辅助插件&#xff1a;3分钟实现视频学习自动化 ⚡ 【免费下载链接】zhihuishu 智慧树刷课插件&#xff0c;自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台繁琐的视频学习流程而烦恼吗&#xff1f;…...

OralGPT-Omni:牙科多模态大语言模型的技术突破与应用

1. OralGPT-Omni&#xff1a;牙科多模态大语言模型的技术突破作为一名在牙科AI领域深耕多年的从业者&#xff0c;我见证了从传统影像分析到智能诊断的技术演进。OralGPT-Omni的出现标志着牙科人工智能进入了一个新阶段——它不仅是首个专为牙科设计的MLLM&#xff08;多模态大语…...

ARM PMU用户模式访问控制机制与开发实践

1. ARM PMU用户模式访问控制机制解析性能监控单元(Performance Monitoring Unit, PMU)是现代ARM处理器架构中的关键组件&#xff0c;它通过硬件计数器实现对处理器各类事件的监控和统计。在Linux性能分析、系统调优等领域&#xff0c;PMU发挥着不可替代的作用。然而&#xff0c…...

XUnity.AutoTranslator完全指南:3分钟掌握Unity游戏实时翻译的核心技巧

XUnity.AutoTranslator完全指南&#xff1a;3分钟掌握Unity游戏实时翻译的核心技巧 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾经因为语言障碍而无法畅玩心爱的日系RPG游戏&#xff1f;或者因…...

3步实战微信数据本地解密:WechatDecrypt技术深度解析

3步实战微信数据本地解密&#xff1a;WechatDecrypt技术深度解析 【免费下载链接】WechatDecrypt 微信消息解密工具 项目地址: https://gitcode.com/gh_mirrors/we/WechatDecrypt 微信数据解密、本地隐私保护、开源安全工具是每个重视数字隐私的用户必须掌握的核心技能。…...

开源大模型MOSS部署与微调实战:从本地运行到领域适配

1. 项目概述&#xff1a;从“闭源”到“开源”的国产大模型突围最近在AI圈子里&#xff0c;一个名为“MOSS”的开源大语言模型项目引起了我的注意。这名字听起来是不是有点耳熟&#xff1f;没错&#xff0c;它和《流浪地球》里那台超级计算机同名&#xff0c;但此MOSS非彼MOSS。…...

基于Next.js与MCP协议构建ChatGPT原生应用:从原理到部署

1. 项目概述与核心价值如果你是一名前端或全栈开发者&#xff0c;最近肯定没少听说“AI应用”和“ChatGPT插件”这些词。但说实话&#xff0c;很多教程要么停留在调用API的层面&#xff0c;要么就是概念讲得天花乱坠&#xff0c;真到动手把你自己开发的应用无缝“嵌入”到ChatG…...

WarcraftHelper终极指南:让魔兽争霸3在现代Windows系统上完美运行

WarcraftHelper终极指南&#xff1a;让魔兽争霸3在现代Windows系统上完美运行 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3在Windo…...

如何快速掌握SMUDebugTool:AMD Ryzen处理器深度调试完整指南

如何快速掌握SMUDebugTool&#xff1a;AMD Ryzen处理器深度调试完整指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: http…...

Jlama:纯Java实现的JVM大语言模型推理引擎解析

1. 项目概述&#xff1a;一个为JVM而生的高效推理引擎最近在折腾大语言模型本地部署和推理时&#xff0c;发现了一个挺有意思的项目——Jlama。这名字一看就让人联想到Meta的Llama&#xff0c;但前缀的“J”已经揭示了它的核心身份&#xff1a;一个纯Java实现的、专为JVM生态设…...

G-Helper终极指南:如何轻松掌控华硕笔记本性能与续航

G-Helper终极指南&#xff1a;如何轻松掌控华硕笔记本性能与续航 【免费下载链接】g-helper G-Helper is a fast, native tool for tuning performance, fans, GPU, battery, and RGB on any Asus laptop or handheld - ROG Zephyrus, Flow, Strix, TUF, Vivobook, Zenbook, Pr…...