<?php
function f1($p1,&$p2){
$p1++;
$p2++;
$result= $p1+ $p2;
return $result;
}
$v1=10;
$v2=20;
$s = f1($v1,$v2);
echo "<br>s=$s,v1=$v1,v2=$v2";
// <br>s=32,v1=10,v2=21
?>

函数执行原理(重点/难点)

程序总是运行在一个“内存空间”。

程序开始执行的位置所在的空间,可以称之为“主运行空间”。

实际上,通常函数外面的那些程序,都是运行在主空间中。

那么,函数的运行,就相对独立了——每个函数的每次调用,都是运行在单独的一个自己的空间中。

如下所示:

提示:

在从主空间进入函数空间的时刻,会先将函数调用时的“实参数据”,赋值(传值)给“形参变量”

而后,才开始执行函数内部的语句!

函数参数(重点)

形参(形式参数)

就是定义函数的时候,在函数名后的小括号中给出的变量名。

形参,只能在函数内部使用——即该变量的使用范围仅仅局限于当前函数内部。

形参的本质是变量!

实参(实际参数)

就是调用函数的时候,在函数名后的小括号中给出的数据值。

实参的本质是数据!

函数参数的传值方式

含义:

实参变量的值,以什么方式传给形参。

说明:

其前提是:实参是一个变量的情况。

所以其实这里讨论的是:两个变量的传值方式问题。

默认情况下是值传递。

可以使用“&”符号设定为引用传递,形式如下:

function  f1( $p1, &$p2, .... ){

。。。。。

}

此时,在函数内部,对该形参变量改变其值,则对应的实参变量(在函数外部)的值也改变了。

---------------------

PHP第四天 函数引用传值的更多相关文章

  1. PHP 函数引用传值

    <?php /* * @1 $arr = array_fill(1,100,'bbb'); echo memory_get_usage()."<br>"; fun ...

  2. php总结6——自定义函数、引用传值

    6.1 自定义函数 function 函数名称(参数[=默认值],参数[=默认值]...){ 函数体 [return val]; } 1) 无参数无返回 2) 有参数无返回 3) 有参数有返回 函数中 ...

  3. 从一次面试经历谈PHP的普通传值与引用传值以及unset

    关于这个概念一般都会在PHP的第一堂课说变量的时候给介绍,并且我以前还给其他PHPer介绍这个概念.但是作为一个工作一段时间的PHPer的我,竟然在面试的时候一下子拿不定主意最后还答错了,很觉得丢脸( ...

  4. php普通传值和引用传值 (相当通俗易懂的一篇讲解)

    首先,要理解变量名存储在内存栈中,它是指向堆中具体内存的地址,通过变量名查找堆中的内存; 普通传值,传值以后,是不同的地址名称,指向不同的内存实体; 引用传值,传引用后,是不同的地址名称,但都指向同一 ...

  5. Javascript模式(第四章函数)------读书笔记

    一 背景 js函数的两个特点:1 函数是第一类对象(first-class object):2 函数可以提供作用域 1 函数是对象: 1 函数可以在运行时动态创建,还可以在程序执行过程中创建 2 可以 ...

  6. Java基础必备 -- 堆栈、引用传值、垃圾回收等

     在Java中,对象作为函数参数的传递方式是值传递还是引用传递?String str = "abc" 与 String str = new String("abc&quo ...

  7. Python引用传值总结

    Python函数的参数传值使用的是引用传值,也就是说传的是参数的内存地址值,因此在函数中改变参数的值,函数外也会改变. 这里需要注意的是如果传的参数类型是不可改变的,如String类型.元组类型,函数 ...

  8. PHP引用传值规范问题

    在我上一篇:  shopnc 商城源码阅读笔记--开篇概述   中,遇到了一个PHP引用传值导致的错误,情况大致如下: 在我查阅PHP官方文档  的中文版的时候   http://php.net/ma ...

  9. C++ primer(八)--内联函数 引用变量 引用传递函数参数 函数重载/模板/模板具体化

    一.内联函数     常规函数和内联函数的区别在于C++编译器如何将他们组合到程序中.编译过程的最终产品是可执行程序--由一组机器语言指令组成.运行程序时,操作系统将这些指令载入到计算机内存中,因此每 ...

随机推荐

  1. nyoj_8_一种排序_201311251238

    一种排序 时间限制:3000 ms  |           内存限制:65535 KB 难度:3   描述 现在有很多长方形,每一个长方形都有一个编号,这个编号可以重复:还知道这个长方形的宽和长,编 ...

  2. CPU工作原理简图

  3. Hibernate注解开发教程

    目录 第一章 类级别注解 1-1 本章简介 一.Hibernate注解简介 二.JPA与Hibernate的关系 三.Hibernate注解的分类 1-2 准备工作 1-3 @Entity注解 1-4 ...

  4. RDS for MySQL查询缓存 (Query Cache) 的设置和使用

    https://help.aliyun.com/knowledge_detail/41717.html?spm=5176.7841698.2.11.aCvOXJ RDS for MySQL查询缓存 ( ...

  5. MVC.Net:通过Global.asax捕捉错误

    在MVC.Net中,如果我们想做一个统一的错误处理的模块,有几个选择,一种是通过一个Base Controller来实现,另外一种就是在Global.asax中实现.这里介绍后一种方法. 首先打开Gl ...

  6. CF #329 D

    D题,LCA是很明显的.要注意的是,因为是除法,所以最多可以除x>2的有64次,当大于64时可以直接返回0.而且注意到可能会有很多值为1的边,可以使用路径压缩,把边为1的边压缩掉,类似于并查集的 ...

  7. HDU 5239 上海大都会 D题(线段树+数论)

    打表,发现规律是存在一定次数(较小)后,会出现a=(a*a)%p.可以明显地发现本题与线段树有关.设置标记flag,记录本段内的数是否均已a=a*a%p.若是,则不需更新,否则更新有叶子结点,再pus ...

  8. [Angulalr] Speed Up Reducer Development Using Ngrx Schematics

    When we use NGRX, we need to create some bolipates. Now with Angulalr6, we can use CLI to generate t ...

  9. B1607 [Usaco2008 Dec]Patting Heads 轻拍牛头 数学

    今天净做水题了,这个题还不到十五分钟就搞定了,思路特别简单,就是直接按照线性求因子个数的思路就行了. 题干: Description 今天是贝茜的生日,为了庆祝自己的生日,贝茜邀你来玩一个游戏. 贝茜 ...

  10. OC常用的数学函数及宏定义

    一.函数 1. 三角函数 double sin (double);正弦 double cos (double);余弦 double tan (double);正切 2 .反三角函数 double as ...