精华内容
下载资源
问答
  • 传值调用 传值调用 传值调用传值调用 传值调用 传值调用
  • php传值调用传值调用和变量函数 代码 1 <?php 2 3 //传值调用,$m的值不改变 4 function text($i){ 5 $i = 'Clive'; 6 echo $i; 7 8 } 9 text(123); 10 echo '<hr/>'; 11 $m = ...

    php传值调用和传值调用和变量函数

    代码

     1 <?php
     2 
     3 //传值调用,$m的值不改变
     4 function text($i){
     5     $i = 'Clive';
     6     echo $i;
     7 
     8 }
     9 text(123);
    10 echo '<hr/>';
    11 $m = 123;
    12 text($m);
    13 echo '<hr/>';
    14 echo $m;
    15 echo '<hr/>';
    16 
    17 //传址引用,注意&符号,$m的值改变
    18 function text2(&$i){
    19     $i = 'Clive';
    20     echo $i;
    21 }
    22 $m = 123;
    23 text2($m);
    24 echo '<hr/>';
    25 echo $m;
    26 echo '<hr/>';
    27 
    28 //变量函数,这样33行实现和和30行一样的功能
    29 $a = 'Clive';
    30 echo md5($a);
    31 echo '<hr/>';
    32 $username = 'md5';
    33 echo $username('Clive');

     

    说明

    php中传值和传址就多了一个函数中声明的那个变量是否带了&,如18行

    变量函数的特点就是等量替换,就是相当于33行的$username完全替换成了md5这个函数。

     

    转载于:https://www.cnblogs.com/Renyi-Fan/p/8545488.html

    展开全文
  • 对于函数的调用,我们一般分为三种基本类型:无参数调用、传值调用传值调用。 一、无参数 无参数调用很好理解,比如说,我们要创建一个打印通讯录菜单的函数: void menu() { printf("**************************...

    函数调用

    对于函数的调用,我们一般分为三种基本类型:无参数调用、传值调用、传值调用

    一、无参数

    无参数调用很好理解,比如说,我们要创建一个打印通讯录菜单的函数:

    void menu()
    {
    	printf("*******************************************\n");
    	printf("*******1.添加联系人     2.删除联系人*******\n");
    	printf("*******3.查找联系人     4.修改联系人*******\n");
    	printf("*******5.查看通讯录     6.排序联系人*******\n");
    	printf("***************** 0.退出 ******************\n");
    }
    

    在这个函数中我们仅要求它完成基本的任务,如打印,那么它完全不需要返回值,也不需要参数。这种是最为简单的调用,不过相对也比较少用。
    下面要介绍的,是今天的重头戏——传值调用、传址调用。一字之差,又能给它们带来多大的差别呢?

    二、传值调用

    传值与传址调用的区别在于函数参数不同。
    传值调用是将我们创建的一个变量,或者说一个数值,传给函数,然后函数用另一个变量接收,比如说:

    int Negative(int x)
    {
    	return -x;
    }
    int main()
    {
    	int x = 1;
    	int y = Negative(x);
    	printf("x=%d\n", x);
    	printf("y=%d\n", y);
    	return 0;
    }
    }
    

    输出结果为:x=1 y= - 1;
    我们创建了一个Negative()函数来计算一个数的相反数然后将它返回。在这种情况下,我们追求的是一个结果。换句话说,我们不希望这个函数对x这个数本身造成什么影响,我们只要求函数借用这个值进行一定的计算,以达到我们创建函数的目的。

    听到这里你是否能够理解传值调用了呢?如若不能,没关系,接下来我们可以将它和传址调用进行一个对比,从不同中找出各自的特点——

    三、传址调用

    传址调用,顾名思义,就是将一个地址(指针)传给函数,然后让函数通过地址访问到这个地址对应的那个变量,或者说是:指针指向的那个你想改变的参数。
    什么意思?代码示例如下:

    void Negative(int x)
    {
    	x = -x;
    }
    int main()
    {
    	int a = 1;
    	Negative(a);
    	printf("%d", a);
    	return 0;
    }
    

    我们创建了一个Negative()函数,与上次不同的是,我们希望把一个变量传给它,然后通过这个函数把这个变量的值变成它的相反数。

    能做到吗?
    答案是:NO!
    为什么?这里介绍函数的形参,也就是这里的int x做的事情。
    我们知道,函数的形参接收的是实参,也就是说,int x接收的是a的值,但是,重点来了:
    函数为形参单独开辟了一块空间(注意,这是与实参不同的一块空间)来存放实参的值,那么我们在函数内部对这个形参噼里啪啦做了一堆的事情,最终改变的只是形参,而实参还是在原先的那块空间呆着,没有做任何变化。
    这个时候,传址调用的作用就显示出来了:

    void Negative(int* x)
    {
    	*x = -*(x);
    }
    int main()
    {
    	int a = 1;
    	Negative(&a);
    	printf("%d", a);
    	return 0;
    }
    

    我们把a的地址传给Negative()函数,由int*类型的指针x接收,然后通过解引用,改变a的值。
    打个比方,传址调用就是顺着网线打人的那种感觉。
    你把地址给我了,那我就有顺着这个地址来改变你的途径了,只需要解引用一下就可以做到。

    小总结

    总而言之,传址调用的作用在于改变你传过去的实参,实参对于传址调用的函数来说,是一个它要改变的量,可对于传值调用的函数来说,这个实参只是个工具人,没有多大的作用,函数只是借助这个工具完成任务,比如说:循环的次数啦、数组的大小……

    再总结一下,就是,如果你想把传递过去的参数改变,那么传址调用是首选,如果仅仅是借助这个参数完成一个任务,那么,传值是首选。

    不知我是否讲明白了呢?欢迎评论区探讨哦
    //创作不易,留个赞或者评论再走呗by白龙码

    展开全文
  • 传值调用
  • 传值调用和传名调用

    2021-02-24 16:03:37
    scala的传值调用和传名调用 共用代码: //传值调用和传名调用 var money = 100 //定义一个花钱的方法 //花钱 def buy(): Unit ={ money -= 5 } //查询 def see()={ buy() money } 传值调用   当传入...

    scala的传值调用和传名调用

    共用代码:

    //传值调用和传名调用
      var money = 100
      //定义一个花钱的方法
      //花钱
      def buy(): Unit ={
        money -= 5
      }
    
    
      //查询
      def see()={
        buy()
        money
      }
    

    传值调用

      当传入参数为一个具体的数值时,参数的值一旦确定,就不会改变。

    	def value(x:Int): Unit ={
        	for(i <- 1 to 5){
         	 println("money="+ x )
       	 }
      	}
    

    value(see())运行结果:

    money=95
    money=95
    money=95
    money=95
    money=95
    

    传名调用(函数)

      将函数作为参数,假设接收该函数返回值的变量为x,每当方法体内部调用该变量的时候,该变量所对应的函数也会相应的执行一次。

    	def key(x: => Int): Unit ={
        	for(i <- 1 to 5){
          		println("money="+ x )
        	}
      	}
    

    key(see())的执行结果为:

    money=90
    money=85
    money=80
    money=75
    money=70
    
    展开全文
  • 传值调用与后面两者的区别在于传值调用在进入函数体之前,会在栈上建立一个实参的副本,而引用和指针调用没有这个动作。建立副本的操作是利用拷贝构造函数进行的。因此,要禁止传值调用,就必须在类的拷贝构造函数上...
  • 主要介绍了对Java中传值调用的理解分析,通过分析对比,较为深入的分析了Java中传值调用的原理与用法,需要的朋友可以参考下
  • 形参&实参,传值调用&引用调用

    千次阅读 多人点赞 2019-03-20 09:11:00
    引用调用传值调用传值调用的定义传值调用的代码实例引用调用引用调用的定义引用调用的代码实例 引言 相信很多C语言初学者都知道形参实参的概念,但在函数调用中,仍然还有很多人会混淆,本文将借助示例代码详细解释...

    引言

    相信很多C语言初学者都知道形参实参的概念,但在函数调用中,仍然还有很多人会混淆,本文将借助示例代码详细解释C语言中形参实参及传值调用和引用调用。

    形参&实参

    函数调用中存在两类参数:形式参数及实际参数,两类参数的功能和使用甚至所占空间都不尽相同。下面本文将解释二者的异同。

    什么是形参

    形式参数(formal parameter),简称形参,是在函数头括号内声明的,某一函数私有的局部变量,。在函数外部中同名变量不会与之冲突。每次调用函数,会对函数头内定义的形参赋值。

    如何声明带形参的函数

    在使用ANSI C形式声明函数原型:

    void function( char a, int b);
    

    当函数接受参数时,函数原型用逗号分隔的列表指明参数的数量和类型。

    什么是实参

    实际参数(actual argument),简称实参,它是**主调函数(calling function)赋给被调函数(called function)**的具体值。它可以是常量,变量,正确的表达式,甚至是函数。但无论如何实参必须有一个具体的值以供拷贝于形参之中。

    二者关系

    简而言之,形参实际上是一种“空白”或是一种“占位符”,在函数调用的过程中,我们在某一已定义的函数中的括号内使用实参,此后函数将会拷贝实参至函数体内“填充”形参,并在函数体内得到使用。
    至于怎样使用,本文将在后续段落进行详细描述。

    传值调用&引用调用

    实参的传递过程有两种不同的机制,其分别是传值调用和引用调用。

    传值调用

    传值调用的定义

    在传值调用过程中,形参是一个局部变量,其初值为调用函数是括号内赋予的实参的值。其只是使用了实参的值,在程序运行时,其在函数体内占用另外的内存空间,不对实参造成影响。

    传值调用的代码实例

    #include<stdio.h>
    int fun1(int a,int b){
    	a=2;
    	b=2;
    }
    int main(){
    	int i=0;
    	int j=0;
    	printf("before change:\ni=%d,j=%d\n",i,j);
    	fun1(i,j);
    	printf("after change:\ni=%d,j=%d\n",i,j);   
    	}
    

    其运行结果如下:

    我们发现,果然,传值调用中对形参的操作不会对实参造成影响。

    引用调用

    引用调用的定义

    在引用调用过程中,形参传递的不再只是一个值或是一个简单的结果,而是传递实参的地址。虽然形参仍然是一个占位符或是一个空白,但将实参拷贝到形参上后,它不再如传值调用一样占用额外的内存空间,而是和实参占用同一个内存空间。发生在形参上的任何改变都将与此同时体现在实参上。

    引用调用的代码实例

    实例1:

     #include<stdio.h>
     int fun3(int *a,int *b){
    	int m,*c;
    	m=0;
    	c=&m;
    	*c=*a;
    	*a=*b;
    	*b=*c;
    }
     int main(){
    	int *p,*q,s,t;
    	s=11;
    	t=24;
    	p=&s;
    	q=&t;
    	printf("before change:\ns=%d,t=%d\n",*p,*q);
    	fun3(p,q);
    	printf("after change:\ns=%d,t=%d\n",*p,*q); 
    } 
    

    其运行结果如下:
    在这里插入图片描述
    在此例中,我们调用函数时代入的实参分别是s和t的地址,因此发生引用调用,在函数中对s和t进行交换后,实参s和t的值同时也被交换。
    实例2:

    #include<stdio.h>
    #define N 4
    int fun3(int *a){
    	int i;
    	for (i=0;i<N;i++){
    		a[i]=0;
    	}
    }
    int main(){   
    	int i;  
    	int m[]={1,2,3,4};
    	printf("before change:\nm[4]=");
    	for (i=0;i<N;i++){
    		printf("%d ",m[i]);   
    		}
    		printf("\n");
    	fun3(m); 							/*此时的m是一个数组名,同时也是数组m第一个值m[0]的地址,此时发生引用调用*/ 
    	printf("after change:\nm[4]=");                
    	for (i=0;i<N;i++){
    		printf("%d ",m[i]);   
    		}
    	printf("\n");
    	} 
    

    其运行结果如下:
    在这里插入图片描述
    我们可以清晰地看见实参数组m的值在函数内部发生了变化。

    展开全文
  • 引用调用和传值调用

    2017-05-09 15:58:56
    1.传值调用又分为数据传值调用和地址传值调用。 数据传值调用方式是将实参的数据值传递给形参。 实参和形参在栈空间内的地址不相同,改变形参值不影响实参值; 地址传值调用方式是将实参的地址值传递给形参, 实参和...
  • 传引用调用与传值调用

    千次阅读 多人点赞 2017-10-26 12:20:01
    以下关于传值调用与传引用调用的叙述中,正确得是()。 ① 在传值调用方式下,可以实现形参和实参间双向传递数据的效果 ② 在传值调用方式下,实参可以是变量,也可以是常量和表达式 ③ 在引用调用方式下,...
  • 传值调用和引用调用

    2021-04-14 19:53:13
    (1)传值调用。在传值调用时,过程的形式参数取得的是实在参数的值。在这种情况下,形式参数实际上是过程中的局部量,其值的改变不会导致调用点所传送的实在参数的值发生改变,也就是说数据的传送是单向的,只往下传...
  • C语言函数调用三种方式:传值调用,引用调用和传地址调用
  • 传值调用与传址调用

    2019-04-28 14:48:44
    众所周知,函数的调用分为传值调用和传址调用,那他们的区别是什么呢? 传值调用: 函数的形参和实参分别占有不同的内存块,对形参的修改不会影响实参。 传址调用: 传址调用是把函数外部创建变量的内存地址传递...
  • 在main函数传值调用

    2017-08-19 11:05:14
    在main函数传值调用
  • C语言传值调用与传址调用的区别

    千次阅读 2020-12-03 21:03:03
    传值调用传值调用是指当一个函数被调用时,C++根据实参和形参的对应关系将实参的值一一复制给形参,即实参的值单向传递给形参。但函数本身并不对实参进行任何操作,即使形参的值在函数中改变,实参的值也不会受到...
  • 传值调用传值调用的区别(附例子) 来源:信奥一本通-函数
  • 传值调用: object ZFBToPay { var money = 1000 //吃一顿消费50 def eat():Unit={ money=money-50; } //余额 def balance():Int={ eat() money } //打印余额 def printMoney(x: Int):Unit={ ...
  • 传值调用和传址调用

    2018-02-13 21:42:23
    一、普通变量作为函数形参形参和实参相互独立,但是有一定的关联性,即形参是由实参赋值得到,仅仅完成值的复制,为传值调用;二、数组作为函数形参数组退化为指针,将首地址传入,在函数内部传进来的数组名是首地址...
  • 大多处刚接触程序的小伙伴在学习C/C++的过程中都会遇到函数传值调用,传址调用和传引用的概念,刚开始接触时肯定一时无法理解三者的区别和联系,可能有一部分小伙伴可能学了很长接触很长时间也一直对三者的概念有...
  • 主要介绍了Jmeter跨线程组传值调用实现图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 传值调用和引用调用的理解

    千次阅读 2019-08-13 22:57:38
    传值调用 实参---->形参(实参传数给形参,形参获得实参的数值),改变形参不改变原先的实参,因为两者在获得值之后没有任何关系。 引用调用 实参---->形参(实参传地址给形参,形参获得实参的地址),改变形...
  • 传值调用时,参数只在调用时计算一次,后续重复使用计算的结果 传名调用时,参数在调用时不会计算,只有真正用到参数的时候才会计算(x:=> Int) object ScalaFunction { var money =10 def count:Int={ money-=...
  • c语言传值调用与引用调用

    千次阅读 2018-04-09 15:01:16
    转载自 https://blog.csdn.net/ly0303521/article/details/44310125调用:把实参的值赋给形参1、传值调用 先把实参的值复制一份,把复制后的实参的副本赋给形参,之后形参如何变化与实参无关。2、引用调用 把实参...
  • 传值调用 传值调用不会改变变量的值,在函数弹栈后,原变量的值不变。 class Demo { public static void main(String[] args) { int x = 6; show(x); /...
  • 传值调用与引用调用

    2019-01-11 01:02:22
    传值调用与引用调用 1using System; 2 3class MethodCall 4{ 5 public static void Main() 6 { 7 /**//* 8 * 参数类型分为 in, ref, out 三种,默认为 in。 9 * in 类型在子方法中修改了...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 124,656
精华内容 49,862
关键字:

传值调用