首页 > 其他分享 >理解值传递,地址传递和引用传递

理解值传递,地址传递和引用传递

时间:2024-10-08 11:23:35浏览次数:7  
标签:tmp cout int 传递 地址 引用 swap

转载:https://blog.csdn.net/weixin_44309097/article/details/124086049#:~:text=在c++中,有三种主

值传递

传递的仅仅是值:

void swap(int x,int y){
  int tmp=x;
  x=y;
  y=tmp;
  cout<<x<<y<<endl;
}
int main(){
  int a=4,b=6;
  swap(a,b);
  cout<<a<<b<<endl;
}

此代码输出结果为6 44 6,实际上只是将a,b的值赋值给x和y,a,b的值其实并没有改变。

地址传递

传递的是地址:

void swap(int *x,int *y){
  int tmp=*x;
  *x=*y;
  *y=tmp;
  cout<<*x<<*y<<endl;
}
int main(){
  int a=4,b=6;
  swap(&a,&b);
  cout<<a<<b<<endl;
}

此代码输出6 46 4它将 a 的地址(&a)代入到 x,b 的地址(&b)代入到 y。同上面的值传递一样,函数调用时作了两个隐含的操作:将&a,&b的值赋值给了 x、y。指针 x、y的值已经分别是 a、b 变量的地址值了。接下来,对x、y 的操作当然也就是对 a、b 变量本身的操作了。所以函数里头的交换就是对 a、b 值的交换了,这就是所谓的地址传递

引用传递

void swap(int &x,int &y){
  int tmp=x;
  x=y;
  y=tmp;
  cout<<x<<y<<endl;
}
int main(){
  int a=4,b=6;
  swap(a,b);
  cout<<a<<b<<endl;
}

此代码输出6 46 4,x、y分别引用了 a、b变量。这样函数里头操作的其实就是实参 a、b 本身了,也就是说函数里是可以直接修改到 a、b 的值了。

标签:tmp,cout,int,传递,地址,引用,swap
From: https://www.cnblogs.com/VickyWu/p/18451318

相关文章

  • 宝塔面板外网地址无法访问的原因和解决方法
    宝塔面板外网地址无法访问可能有以下几个原因及相应的解决方法:端口未开放原因:服务器防火墙或安全组设置中没有开放宝塔面板使用的默认端口(如8888)。解决方法:登录服务器,检查并确保防火墙或安全组规则中已添加允许外部访问的规则。IP地址限制原因:在宝塔面板的安全设置中,......
  • 宝塔面板地址忘了怎么办
    如果你忘记了宝塔面板的访问地址,可以按照以下步骤尝试找回或确定其地址:检查安装文档:查看当时安装宝塔面板时的文档或记录,通常安装完成后会给出默认的访问地址。默认地址尝试:宝塔面板默认的访问地址通常是 http://服务器IP:8888 或 https://服务器IP:8888。尝试使用......
  • Word中 Endnote 引用标蓝色
    1.打开word中的endnote加载项。如图所示,勾选这两个设置。 确认后会自动变为超链接,显示蓝色以及下划线。2.在样式设置中,将超链接的下划线取消。之后就会只显示蓝色引用。   结果显示:   ......
  • 怎么查找登陆网站后台?(如何查询网站后台地址)
    查找或确定一个网站的后台登录地址通常不是一件直接的事情,因为不同的网站可能会有不同的后台管理入口。不过,这里有一些通用的方法可以帮助你找到或猜测一个网站的后台登录地址:常见的后台路径许多网站使用一些常见的路径作为后台登录页面,例如:/admin/administrator/wp-ad......
  • c++指针传递与引用传递
    c不支持引用传递的!在C++中,指针传递和引用传递是两种常用的参数传递方式,它们各自有不同的特点和适用场景。下面是两者之间的主要区别:1.语法和使用指针传递定义和调用:函数参数是一个指针类型,调用时需要传递变量的地址。解引用:在函数内部需要使用解引用操作符*来访问指针......
  • 织梦数据库能看到后台地址吗?
    织梦CMS(DEDECMS)的后台地址并不是直接存储在数据库中的,而是通过配置文件来设置的。通常,织梦CMS的后台地址是通过特定的URL路径来访问的,而不是存储在数据库中。后台地址的配置织梦CMS的后台地址通常可以通过以下方式访问:默认后台地址:http://yourdomain.com/dede/配置文件中的......
  • 帝国cms模板里显示发布信息人的ip地址
    要在EmpireCMS模板中显示发布信息人的IP地址,可以按照以下步骤进行操作:1.管理数据表登录EmpireCMS后台。进入数据表管理:依次点击:管理数据表 -> 管理字段。添加一个IP字段:点击 添加字段。输入字段名称 infoip。字段类型选择 VARCHAR。长度设置为 15。......
  • RUST的引用和借用
        上一篇博客说到,移动是转交所有权,而克隆(Copy和Clone)是获得一个和旧值相同的新值的所有权)。    那么如果我们想不转交所有权又对变量的值进行读取和修改(比如方法的传参问题,会改变所有权,即移动;或者读取和修改的不是原变量的值,即克隆),应该怎么做?    RUST提供了......
  • 在帝国CMS后台禁止了管理自己的ip地址无法访问解决办法
    当你遇到帝国CMS无法访问的情况,通常是因为配置文件中的IP禁止设置出现了问题。以下是具体的解决步骤:问题1:无法访问自己的网站原因分析问题通常出现在 config.php 文件中的 closeip 设置,可能在最后一个IP后面有多余的空行或空格。解决方法打开 config.php 文件:......
  • 从零开始讲PCIe(4)——PCI总线的地址空间分配
    一、概述        PCI架构支持三种地址空间,如图1-10所示:内存地址空间(MemoryMap)、I/O地址空间(I/OMap)和配置地址空间(PCIConfigureSpace)。在x86处理器中,处理器可以直接访问内存和I/O空间。PCI设备可以映射到处理器的内存地址空间,支持32位或64位内存寻址。在I/O地址......