首页 > 后端开发 > 正文

按引用传递参数用php来表示圆柱的表面积?(PHP传值,引用和传址的区别)

2024-07-18 22:54:43 | 我爱编程网

最近经常有小伙伴私信询问按引用传递参数用php来表示圆柱的表面积?(PHP传值,引用和传址的区别)相关的问题,今天,我爱编程网小编整理了以下内容,希望可以对大家有所帮助。

本文目录一览:

按引用传递参数用php来表示圆柱的表面积?(PHP传值,引用和传址的区别)

按引用传递参数用php来表示圆柱的表面积?

下面是一个使用按引用传递参数的 PHP 函数,用于计算圆柱的表面积:
function cylinder_surface_area($radius, $height, &$surface_area) {
$surface_area = 2 * pi() * $radius * $height + 2 * pi() * pow($radius, 2);
}

// 示例用法
$r = 3; // 圆柱底面半径
$h = 5; // 圆柱高度
$s = 0; // 圆柱表面积

cylinder_surface_area($r, $h, $s);
echo "圆柱表面积为: " . $s;

在这个函数中,前两个参数 $radius 和 $height 分别表示圆柱的底面半径和高度。第三个参数 $surface_area 是一个按引用传递的变量,用于存储计算得到的圆柱表面积值。
在函数体中,调用内置的 pi() 函数来获取圆周率π的值。然后使用公式计算圆柱的表面积,并将结果存储在 $surface_area 变量中。
在示例用法中,我们定义了圆柱的底面半径和高度,然后调用 cylinder_surface_area() 函数来计算表面积。最后,使用 echo 函数将结果输出到屏幕上。
请注意,由于 $surface_area 是通过按引用传递的方式传递给函数的,因此在函数结束后,它将包含计算得到的表面积值。

按引用传递参数用php来表示圆柱的表面积?(PHP传值,引用和传址的区别)我爱编程网

PHP传值,引用和传址的区别

实参(被调)、行参(主调)
函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。
--传值:
是把实参的值赋值给行参,相当于复制一块同样的空间那么对行参的修改,不会影响实参的值
--传地址:
是传值的一种特殊方式,只是他传递的是地址,不是普通的如int那么传地址以后,实参和行参都指向同一个对象--传引用:
真正的以地址的方式传递参数
传递以后,行参和实参都是同一个对象,只是他们名字不同而已对行参的修改将影响实参的值
即传址时只需在函数调用时在参数的前面加上"&"号即可。将函数外部的值的内存地址传递给内部的参数,在函数内部的所有操作都会改变函数外部参数的值。
值传递(passl-by-value): 压栈的是参数的副本。任何的修改是在副本上作用,没有作用在原来的变量上。
过程中:被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。
传指针(pointer): 压栈的是指针变量的副本。当你对指针解指针操作时,其值是指向原来的那个变量,所以对原来变量操作。
引用传递(pass-by-reference):压栈的是引用的副本。由于引用是指向某个变量的,对引用的操作其实就是对他指向的变量的操作。
过程中:被调函数的形式参数虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。
所谓值传递,就是说仅将对象的值传递给目标对象,就相当于copy;系统将为目标对象重新开辟一个完全相同的内存空间。
所谓引用,就是说将对象在内存中的地址传递给目标对象,就相当于使目标对象和原始对象对应同一个内存存储空间。如果对目标对象进行修改,内存中的数据也会改变。

按引用传递参数用php来表示圆柱的表面积?(PHP传值,引用和传址的区别)

PHP中按值传递和引用传递的区别

我爱编程网(https://www.52biancheng.com)小编还为大家带来PHP中按值传递和引用传递的区别的相关内容。

(1)按值传递:函数范围内对值的任何改变在函数外部都会被忽略

(2)按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改

(3)优缺点:

A:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。

B.按引用传递则不需要复制值,对于性能提高很有好处。

<?php
    header('content-type:text/html;charset=utf-8');
    //探讨一下 array , null, 对象 ,资源的默认传递方式
    // 结论 (1) array 默认是值传递,通过加 & 可以引用传递
    //      (2)  null 默认是值传递,通过加 & 可以引用传递
    //      (3) 资源  是值传递.通过加 & 可以引用传递
    //        (4) 对象默认也是值传递,但是对象值传递是对象标识符    
    $hero = array('no1'=>'蝙蝠侠', 'no2'=>'超人');
    $hero2 = &$hero;
    $hero2['no1'] = '蜘蛛侠';
    echo '<pre>';
    var_dump($hero);
    
    var_dump($hero2);
    $a = null;
    $b = &$a;
    $b = 'abc';
    var_dump($a, $b);
   ?>

以上就是我爱编程网小编整理的内容,想要了解更多相关资讯内容敬请关注我爱编程网。更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“按引用传递参数用php来表示圆柱的表面积?(PHP传值,引用和传址的区别)”相关推荐