指针的认识(传值调用和传地址调用)

        学习指针的目的是使用指针解决问题,那什么问题,非指针不可呢?

当要求写个函数来交换两个变量的值时,我们稍加思索,可以写成如下函数:

void Swap1(int x, int y)
{
	int tmp = x;
	x = y;
	y = tmp;
}

那么我们来进行测试一下,观察结果是否符合预期:

这是什么情况呢?为何没有发生交换

在看看这样是否可行:

可以发现,函数逻辑并没有任何问题,却没有产生应有的效果,下面我们通过调试来一探究竟:

a变量与b变量的内存空间与函数内部的局部变量x变量和y变量是两块不同的空间集x变量和y变量只是得到了a变量与b变量的值,而不代表a变量和b变量

        在main函数内部,创建了a和b,a的地址是0x098fa48,b的地址是0x0098fa3,在调用Swap1函数时,将a和b传递给了Swap1函数,在Swap1函数内部创建了形参x和y接收a和b的值,但是x的地址是0x0098f964,y的地址是0x0098f968,x和y确实接收到了a和b的值,不过x的地址和a的地址不一样,y的地址和b的地址不一样,相当于x和y是独立的空间,那么在Swap1函数内部交换x和y的值,自然不会影响a和b,当Swap1函数调用结束后回到main函数,a和b的没法交换。这种调用函数的方式叫传值调用

        那该如何调用函数才能让函数直接操作a变量和b变量呢?一定想到了吧,传地址吧,这样就可以直接访问a变量和b变量了,不就直接操作了么。经思索写出如下函数:

void Swap2(int*px, int*py)
{
    int tmp = 0;
    tmp = *px;
    *px = *py;
    *py = tmp;
}

来测试看看是否符合预期:

简直完美,下面我们来看图理解一下为何可行:

        传址调用,可以让函数和主调函数之间建立真正的联系,在函数内部可以修改主调函数中的变量;所以未来函数中只是需要主调函数中的变量值来实现计算,就可以采用传值调用。如果函数内部要修改主调函数中的变量的值,就需要传址调用。
 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HBuilderX编写APP二、获取数据代码以及如何打包发行app

<template><!-- 修改APP名字的地方在pages.json文件里面 --><!-- <view class"content"><view class"">温度{{temp}} ℃ </view> //添加温度显示<view class"">湿度{{humi}} % </view> //添加湿度…

“OZON售后管理:加速处理流程,优化顾客售后体验“

在跨境电商领域欣欣向荣的发展浪潮中&#xff0c;退货及其它售后问题成为了许多卖家心头的一大困扰。为了解决卖家在处理退货售后时所面临的问题&#xff0c;无忧易售ERP上线了专为Ozon平台设计的退货规则&#xff0c;旨在帮助卖家们更好的优化售后服务、提升运营效率。 无忧易…

支付通道接口被脚本刷,如何解决

在数字交易日益频繁的今天&#xff0c;支付通道接口的安全性成为商家和平台不容忽视的问题。当支付接口被脚本恶意刷单时&#xff0c;不仅会导致财务损失&#xff0c;还可能引发合规风险和客户信任危机。本文将探讨支付接口被脚本刷单的原因、识别方法、应急处理方案&#xff0…

弘君资本:如何洞察先机?前瞻性指标揭秘新一轮船舶周期

多项目标共同提醒船只上行周期的到来。本文将以我国船只为例&#xff0c;综合剖析这一强周期职业的发展趋势。 复盘全球造船周期&#xff0c;可以看出均匀全球造船周期约为9.6年&#xff1b;在1886—2007年期间&#xff0c;有12个独立的周期&#xff0c;周期均匀长度约为9.6年…

YOLOv10环境搭建推理测试

引子 两个多月前YOLOv9发布&#xff08;感兴趣的童鞋可以移步YOLOv9环境搭建&推理测试_yolov9安装-CSDN博客&#xff09;&#xff0c;这才过去这么短的时间&#xff0c;YOLOv10就横空出世了。现在YOLO系列搞得就和追剧一样了。。。OK&#xff0c;那就让我们开始吧。 一、…

记一次 .NET某质量检测中心系统 崩溃分析

一&#xff1a;背景 1. 讲故事 这些天有点意思&#xff0c;遇到的几个程序故障都是和Windows操作系统或者第三方组件有关系&#xff0c;真的有点无语&#xff0c;今天就带给大家一例 IIS 相关的与大家分享&#xff0c;这是一家国企的.NET程序&#xff0c;出现了崩溃急需分析。…

年中企业业绩管理新篇章:用友BIP收入云助力高效管理!

随着市场竞争的加剧&#xff0c;年中时刻对于企业而言&#xff0c;不仅是评估上半年业绩的节点&#xff0c;更是调整策略、确保全年目标达成的关键时期。高效的业绩管理不仅需要明确的目标设定和计划制定&#xff0c;更需要借助先进的信息技术工具来提升管理效率和决策质量。在…

LES大涡模拟基础

参考自https://www.bilibili.com/video/BV1EL411A7gu?p30&vd_sourceb624b9d3e49866ce8c6a455f1ab7c03f 如何解析涡 用网格不能解析单元尺度以下的涡&#xff08;小涡&#xff09;而只能解析大涡 对于小涡&#xff0c;需要引入亚格子模型 如何选择合适的网格尺寸&…

智能充电模式,治好了我多年的充电焦虑

我是一个有严重电量焦虑的人&#xff0c;而且我发现我周围很多人都是。比如说&#xff0c;我晚上习惯把手机插上充电器&#xff0c;然后就放一边不管了&#xff0c;这样第二天出门才能100%满电&#xff1b;还有啊&#xff0c;有时候我在办公室一坐就是好几个小时&#xff0c;手…

一键式AI智能知识库-谈如何打造人性化的LLM RAG知识库的重要性

RAG系统简介 在现代的LLM RAG&#xff08;Retrieval-Augmented Generation&#xff09;系统中&#xff0c;数据流的设计至关重要。让我们通过一个具体的例子来详细描述一个标准RAG系统的数据流。 首先&#xff0c;用户可以通过多种应用入口访问系统&#xff0c;包括PC应用、微…

实用新型专利申请材料的撰写与准备

在科技创新日益活跃的今天&#xff0c;实用新型专利的申请与保护显得尤为重要。实用新型专利作为一种重要的知识产权形式&#xff0c;对于推动科技进步、促进经济发展具有重要意义。 首先我们需要明确实用新型专利的定义。实用新型专利是指对产品的形状、构造或者其结合所提出…

用实力说话!深度解析蓝海创意云渲染“不排队”背后的秘密

蓝海创意云渲染农场https://www.vsochina.com/cn/render蓝海创意云渲染农场曾为《流浪地球2》、《长津湖》、《独行月球》、《斗破苍穹年番》、《巴霍巴利王2》等知名影视动漫作品提供云渲染服务。这些渲染案例充分证明了蓝海创意渲染深厚的技术底蕴和强大的渲染实力。那么&…

【权威出版/投稿优惠】2024年机器视觉与自动化技术国际会议(MVAT 2024)

2024 International Conference on Machine Vision and Automation Technology 2024年机器视觉与自动化技术国际会议 【会议信息】 会议简称&#xff1a;MVAT 2024截稿时间&#xff1a;(以官网为准&#xff09;大会地点&#xff1a;中国重庆会议官网&#xff1a;www.icmvat.co…

实现 ChatPDF RAG:密集向量检索(R)+上下文学习(AG)

实现 ChatPDF & RAG&#xff1a;密集向量检索&#xff08;R&#xff09;上下文学习&#xff08;AG&#xff09; RAG 是啥&#xff1f;怎么优化 RAG&#xff1f; RAG 是啥&#xff1f; RAG 是检索增强生成的缩写&#xff0c;是一种结合了信息检索技术与语言生成模型的人工智…

第1章 起步

第1章 起步 1.1搭建编程环境1.2 在不同操作系统中搭建 Python 编程环境1.3 运行Hello world 程序1.4 解决安装问题1.5 从终端运行 Python 程序 1.1搭建编程环境 1.1.1 Python 版本 本书编写期间的最新版本为 Python 3.7 1.1.2 运行 Python 代码片段 Python 自带一个在终端窗口…

Shell脚本快速入门

为什么要学shell&#xff1f;能做什么&#xff1f; 答&#xff1a;CI/CD 持续集成&#xff0c;自动化部署作业方式&#xff0c;需要将一系列linux命令程序化&#xff0c;shell 就能做到&#xff0c;提高运维人员的工作效率。 指定解析器&#xff1a; (1) shell解析器 #…

数据中心横向虚拟化 M-LAG 技术

M-LAG 一、M-LAG概述 1、M-LAG定义&#xff1a;M-LAG&#xff08;Multichassis Link Aggregation Group&#xff09;是跨设备链路聚合组。可以将两台设备进行跨设备链路聚合&#xff0c;从而把链路的可靠性从单板机提高到了设备级。 2、优势&#xff1a; (1)、M-LAG系统的两台…

golang界面设计器,全网少见

今天登录govcl的网站&#xff0c;无意中看到有个简易UI设计器。 对于golang的UI专用设计器&#xff0c;还没在网上真正见过。 之前也用govcl来做过两三个桌面应用&#xff0c;好用是好用&#xff0c;不过要安装Lazarus的IDE来拖动设计UI&#xff0c;还要配置很多东西&#xff0…

淘宝评论API调用指南,让你购物不再困扰

一、淘宝评论API概述 淘宝评论API是淘宝开放平台提供的一种服务&#xff0c;它允许开发者通过调用API接口获取淘宝商品评论数据&#xff0c;联讯数据从而为用户提供更加丰富和实用的购物决策信息。通过使用淘宝评论API&#xff0c;开发者可以轻松地实现以下功能&#xff1a; …

AMEYA360:申矽凌推出系统级热管理芯片CTF230X系列 助力WiFi市场换代

办公、刷剧、网购、手游...2022年&#xff0c;蓬勃的全球数字经济活动&#xff0c;总共产生了近100ZB的数据&#xff0c;其中相当比例终端流量是通过无线连接传输&#xff0c;WiFi更是其中的“主渠道”。旺盛的需求&#xff0c;带动WiFi设备年出货量达到40亿台量级&#xff0c;…