C++改变参数值的方式小结

 更新时间:2023年04月04日 10:23:02   作者:_范迪塞尔_  
本文主要介绍了C++改变参数值的方式小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

背景说明 

1、通常我们将参数(包括普通变量指针变量引用变量)传递给函数使用,有的时候希望在函数中改变传入这个参数的值,有的时候不希望改变传入参数的值;

2、函数的参数传入通常有三种方式:按值传递、按地址传递、按引用传递;

  3.1 按值传递:该方式不改变传入参数的值;

  3.3 按地址传递:该方式改变传入参数的值;

  3.3 按引用传递:该方式改变传入参数的值;

示例代码如下

为便于理解,下面的示例程序将三种方式都进行了演示:

具体的原理说明参见下图:

说明1:如上图中所示,程序开始首先执行main函数,当执行到fun1函数时,在栈中开辟一个新的栈帧(图中蓝色fun1块),在fun1块中开辟了一块空间存放p,p的值复制了main中p的值,由于是在栈上开辟的空间,当fun1函数执行完成后这块空间被释放,由于p只是一个临时变量且不指向任何其他的内存位置,故不会改变main函数中的p。

说明2:当程序执行到fun2函数时,会在栈中又开辟一块栈帧(图中紫色fun2块),在fun2块中开辟了一块空间存放p,p的值是main中p的地址,因此*p指向main中的参数p,在fun2函数中对*p的更改本质上都是在更改main中p的值,当fun2函数执行完毕后,虽然p被释放了,但main函数中的p已经被更改过了。

说明3:按引用传递本质跟指针相同,不再过多解释。

到此这篇关于C++改变参数值的方式小结的文章就介绍到这了,更多相关C++改变参数值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解C++编程中的单目运算符重载与双目运算符重载

    详解C++编程中的单目运算符重载与双目运算符重载

    这篇文章主要介绍了详解C++编程中的单目运算符重载与双目运算符重载,是C++入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • C++开发的Redis数据导入工具优化

    C++开发的Redis数据导入工具优化

    这篇文章主要介绍了C++开发的Redis数据导入工具优化方法的相关资料,需要的朋友可以参考下
    2015-07-07
  • C/C++中CJSON的使用(创建与解析JSON数据)

    C/C++中CJSON的使用(创建与解析JSON数据)

    cJSON是一个超轻巧的JSON解析器,本文主要介绍了C/C++中CJSON的使用(创建与解析JSON数据),具有一定的参考价值,感兴趣的可以了解一下
    2021-09-09
  • C语言实现简单计算器程序

    C语言实现简单计算器程序

    这篇文章主要为大家详细介绍了C语言实现简单计算器程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • 基于Qt实现可拖动自定义控件

    基于Qt实现可拖动自定义控件

    这篇文章主要为大家详细介绍了如何基于Qt实现可拖动自定义控件,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以了解一下
    2023-04-04
  • C语言 数据类型详细介绍

    C语言 数据类型详细介绍

    本文主要讲解C语言 数据类型,这里整理了详细的数据类型的资料,希望能帮助刚刚开始学习C语言的同学
    2016-08-08
  • 从头学习C语言之for语句和循环嵌套

    从头学习C语言之for语句和循环嵌套

    这篇文章主要为大家详细介绍了C语言之for语句和循环嵌套,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • C++基于消息队列的多线程实现示例代码

    C++基于消息队列的多线程实现示例代码

    这篇文章主要给大家介绍了关于C++基于消息队列的多线程实现的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C++具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • QT Creator+OpenCV实现图像灰度化的示例代码

    QT Creator+OpenCV实现图像灰度化的示例代码

    这篇文章主要为大家详细介绍了QT如何利用Creator和OpenCV实现图像灰度化效果,文中的示例代码讲解详细,感兴趣的小伙伴可以尝试一下
    2022-12-12
  • C++学习之IO流(输入输出流)详解

    C++学习之IO流(输入输出流)详解

    流是一种抽象概念,它代表了数据的无结构化传递。而用来进行输入输出操作的流就称为IO流。这篇文章主要为大家介绍了C++中IO流的使用详解,需要的朋友可以参考一下
    2021-12-12

最新评论