C++ 形参传值和传指针的误解

 #include <stdio.h>
 void swap(int *x, int *y);
 
 main()
 {  
    int a = 5, b = 9;
    int *pp = &a;
    int *kk = &b;
    swap(pp, kk);
    printf("a=%d\nb=%d\n", *pp, *kk);
 
    return 0;
}
void swap(int *x, int *y)
{
    int *t;
    t = x;
    x = y;
    y = t;
}

会发现,输出结果并没有交互,下面代码会更加信息的阐述这个过程

 #include <stdio.h>
 
 void swap(int *x, int *y);
 
 main()
 {
    int a = 10, b = 20;
    int *pp = &a;
    int *kk = &b;
 
    printf("a的地址%p----b的地址%p\n\n", &a, &b);
    printf("pp的值%p----kk的值%p\n", pp, kk);
    printf("pp的地址%p----kk的地址%p\n\n", &pp, &kk);
    swap(pp, kk);
    printf("a = %d\nb = %d", *pp, *kk);
 
   return 0;
}
void swap(int *x, int *y)
{
    int *t;
    
    printf("x的值%p----y的值%p\n", x, y);
    printf("x的地址%p----y的地址%p\n", &x, &y);
 
    t = x;
    x = y;
    y = t;
}

到这里,才明白,指针终究还是一个变量,当这个变量传入函数的时候,C++还是会执行一个拷贝,生成一个临时对象,只不过该临时对象指向的内存地址与实参指向内存地址一样,所以我们想执行交互操作应该向下面代码这样,或者传递引用

 #include <stdio.h>
 
 void swap(int *p1, int *p2);
 
 main()
 {  
    int a = 5, b = 9;
    int* pointer_1, *pointer_2;
    pointer_1 = &a;
    pointer_2 = &b;
    swap(pointer_1, pointer_2);
    printf("a=%d\nb=%d\n", a, b);
 
    return 0;
}
void swap(int *p1, int *p2)
{
    int t;
 
    t = *p1;
    *p1 = *p2;
    *p2 = t;
}

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

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

相关文章

05.智慧商城——路由前置守卫、首页动态渲染

01. 登录访问拦截 - 路由前置守卫 目标&#xff1a;基于全局前置守卫&#xff0c;进行页面访问拦截处理 说明&#xff1a;智慧商城项目&#xff0c;大部分页面&#xff0c;游客都可以直接访问, 如遇到需要登录才能进行的操作&#xff0c;提示并跳转到登录 但是&#xff1a;对…

大数据-之LibrA数据库系统告警处理(ALM-12047 网络读包错误率超过阈值)

告警解释 系统每30秒周期性检测网络读包错误率&#xff0c;并把实际错误率和阈值&#xff08;系统默认阈值0.5%&#xff09;进行比较&#xff0c;当检测到网络读包错误率连续多次&#xff08;默认值为5&#xff09;超过阈值时产生该告警。 用户可通过“系统设置 > 阈值配置…

从数据图表引入到最终效果呈现:全面解析JVS智能BI图表配置流程

在现今数据驱动的时代&#xff0c;图表是直观展现数据、洞察业务运行态势的重要工具。JVS智能BI的图表配置&#xff0c;具备丰富的组件类型和强大的配置功能&#xff0c;可以轻松实现数据的可视化和分析。 图表配置 组件的引入 1、点击新增组件按钮 2、在弹出的组件窗&#x…

systrace分析 之 问题初步定位

2、systrace分析 之 问题初步定位 1、找到问题点2、有buffer&#xff0c;SF却什么没有取 2.1、GPU 处理时间长导致2.2、区分HWC release 是否有异常&#xff1a;2.3、SF 异常导致2.4、SF 自身处理时间长2.5、RenderThread处理时间长3、案例分享 1、找到问题点 2、有buffer&a…

GoLong的学习之路,进阶,标准库之并发(context)补充并发三部曲,你真的明白context吗?

其实对于&#xff0c;context来说&#xff0c;如果只是用来做并发处理就有些不太合适。因为对于golang来说&#xff0c;context应用场景不仅在并发有用&#xff0c;并且在网络链接&#xff0c;http处理&#xff0c;gorm中都有体现。但是其实&#xff0c;本质来说。以上这些场景…

ubuntu云服务器配置SFTP服务

目录 一、安装并运行SSH服务 1&#xff0c;安装ssh服务 2&#xff0c;运行ssh 3&#xff0c;查看ssh运行状态 二、创建SFTP用户并进行用户相关的配置 1&#xff0c;创建SFTP用户 2&#xff0c;限制用户只能使用 SFTP&#xff0c;并禁止 SSH 登录。打开/ect/ssh/sshd_conf…

解析:什么是生成式AI?与其他类型的AI有何不同?

原创 | 文 BFT机器人 快速浏览一下头条新闻&#xff0c;你会发现生成式AI似乎无处不在。事实上&#xff0c;一些新闻标题甚至可能是通过生成式AI编写的&#xff0c;例如OpenAI旗下的ChatGPT&#xff0c;这个聊天机器人已经展现出了生成看起来像人类所写文本的惊人能力。 当人们…

io+day8

#ifndef __SEM2 #define __SEM3 4 //声明一个创>5 int init_sem(6 7 //声明一个p操8 int P(int sem9 10 //声明一个v操11 int W(int sem12 13 //声明一个删>14 int del_sem(i15 16 #endif 1 #include <myhead.h> …

【博客系统】 二

本文主要介绍了linux和如何在云服务器上部署一个简单的servlet程序. 一.云服务器 真正搞一个网站,是希望这个网站被其他人访问到 , 所以需要一个云服务器(具有外网ip)来让别人也可以访问 云服务器 操作系统是Linux(一般都是通过命令行来操作) 当前市面上常见的系统: 1.windo…

IDEA写mybatis程序,java.io.IOException:Could not find resource mybatis-config.xml

找不到mybatis-config.xml 尝试maven idea:module&#xff0c;不是模块构造问题 尝试检验pom.xml&#xff0c;在编译模块添加了解析resources内容依旧不行 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.or…

魔众文库系统 v5.6.0 DWG文件格式支持,部分数据封面显示异常,定时调度清理临时文件

魔众文库系统基于文档系统知识&#xff0c;建立平台与领域&#xff0c;打造流量、用户、付费和变现的闭环&#xff0c;帮助您更好的搭建文库系统。 魔众文库系统发布v5.6.0版本&#xff0c;新功能和Bug修复累计17项&#xff0c;DWG文件格式支持&#xff0c;部分数据封面显示异…

P95陷阱

想象这个场景&#xff1a; 一位测试同事走到你的座位旁&#xff0c;说&#xff1a;“接到客户&#xff08;上游系统&#xff09;反馈&#xff0c;说我们系统有个Rest接口响应慢。我看了监控上的P95响应时间&#xff0c;都一秒多了&#xff0c;帮忙看看吧。” 又来活了。 你喜…

langchain 之 Tools 多案例使用(一)

原文&#xff1a;langchain 之 Tools 多案例使用&#xff08;一&#xff09; - 简书 ATTENTION: 如果采用 openai 的接口&#xff0c;需要走代理&#xff0c;本文采用 proxychains 进行设置。开启 debug 模式后&#xff0c;能看到更多的输出信息。 import langchain langcha…

ROC 曲线:健康背景下的应用和解释

一、介绍 在医疗保健领域&#xff0c;做出明智的决策对于改善患者治疗结果、有效分配资源和设计有效的诊断测试至关重要。受试者工作特征 (ROC) 曲线是一个强大的工具&#xff0c;在评估诊断测试的性能、区分健康个体和患病个体以及优化医疗保健干预方面发挥着至关重要的作用。…

第07章 面向对象编程(进阶)

一 关键字&#xff1a;this 1.1 this是什么&#xff1f; 在Java中&#xff0c;this关键字不算难理解&#xff0c;它的作用和其词义很接近。 它在方法&#xff08;准确的说是实例方法或非static的方法&#xff09;内部使用&#xff0c;表示调用该方法的对象。它在构造器内部使…

【android】install android NDK

目录 1 下载NDK 2 解压 3 android-ndk的配置 1 下载NDK 下载网址&#xff1a;NDK 下载 | Android NDK | Android Developers 如果没有所需要的版本&#xff0c;则点击页面下面 不受支持的 NDK 下载需要的版本。 2 解压 将压缩文件&#xff08;例如 android-ndk-r25c-…

(五)什么是Vite——冷启动时vite做了什么(依赖、预构建)

vite分享ppt&#xff0c;感兴趣的可以下载&#xff1a; ​​​​​​​Vite分享、原理介绍ppt 什么是vite系列目录&#xff1a; &#xff08;一&#xff09;什么是Vite——vite介绍与使用-CSDN博客 &#xff08;二&#xff09;什么是Vite——Vite 和 Webpack 区别&#xff0…

一看就会的jni,不会你来打我!

环境配置 Android Studio&#xff0c;这个不多说了。 简单说一下NDK的下载和环境变量&#xff0c;方便在Terminal里使用命令(mac版)。 下载 1.可以通过Android Studio内置的Settings-Android SDK-SDK Tools安装NDK&#xff0c;下载目录为 /Users/mac-xxx(Username)/Library…

VF01 bapi BAPI_BILLINGDOC_CREATEMULTIPLE修改付款方

系统标准通过函数SD_PARTNER_READ&#xff0c;读取VBPA表销售订单对应的伙伴。 调整通过源代码增强LV60AA01最后位置。

《QT从基础到进阶·二十九》QT,opencv源码调试

有时候我们在使用VS调试程序的bug&#xff0c;但发现程序崩溃的地方并不在我们写的程序中&#xff0c;我们通过调用堆栈发现程序崩溃的地方出现在QT或者opencv等源码中&#xff0c;那么我们怎么能把断点打到这些开源库中&#xff0c;下面提供一种办法&#xff1a; 解决方案–右…