博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
传入值参数&传入引用参数的区别
阅读量:5319 次
发布时间:2019-06-14

本文共 795 字,大约阅读时间需要 2 分钟。

传值&传引用

1.传值

  • 是把实参的值赋值给行参
  • 那么对行参的修改,不会影响实参的值

2.传地址

  • 是传值的一种特殊方式,只是他传递的是地址
  • 那么传地址以后,实参和行参都指向同一个对象

3.传引用

  • 真正的以地址的方式传递参数 ,传递以后,行参和实参都是同一个对象,只是他们名字不同而已
  • 对行参的修改将影响实参的值

函数调用的角度来分析

1.传值

  • 函数参数压栈的是参数的副本。
  • 任何的修改是在副本上作用,没有作用在原来的变量上。

2.传指针:

  • 压栈的是指针变量的副本。
  • 当你对指针解指针操作时,其值是指向原来的那个变量,所以对原来变量操作。

3.传引用:

  • 压栈的是引用的副本。
  • 由于引用是指向某个变量的,对引用的操作其实就是对他指向的变量的操作。(作用和传指针一样)

函数参数传递机制的基本理论

函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题。基本的参数传递机制有两种:值传递和引用传递。以下讨论称调用其他函数的函数为主调函数,被调用的函数为被调函数。
  • 值传递(pass-by-value)

    被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。
  • 引用传递(pass-by-reference)

    被调函数的形式参数虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。

转载于:https://www.cnblogs.com/GeekDanny/p/10473616.html

你可能感兴趣的文章
编译uboot提示libasm-offsets.c10 error bad value (armv5)解决方法
查看>>
Java程序设计-v01
查看>>
js中的三种函数写法
查看>>
高精度1--加法
查看>>
Laravel框架之Response操作
查看>>
Centos-创建目录-mkdir
查看>>
Ubuntu 12.04 Firefox/Chromium缺少Flash Player问题
查看>>
在线文件管理器elFinder支持中文
查看>>
String比较
查看>>
Django之Models
查看>>
动态添加SqlParameter
查看>>
SQLServer:探讨EXEC与sp_executesql的区别详解
查看>>
Spring缓存注解@Cache使用
查看>>
CSS 透明度级别 及 背景透明
查看>>
Linux定时任务(crond)
查看>>
apache编译安装php后需要注意以下配置
查看>>
20)升级登录标志
查看>>
机器学习之GMM-EM
查看>>
Linux 的 date 日期的使用
查看>>
PHP zip压缩文件及解压
查看>>