PHP第四天 函数引用传值
<?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第四天 函数引用传值的更多相关文章
- PHP 函数引用传值
<?php /* * @1 $arr = array_fill(1,100,'bbb'); echo memory_get_usage()."<br>"; fun ...
- php总结6——自定义函数、引用传值
6.1 自定义函数 function 函数名称(参数[=默认值],参数[=默认值]...){ 函数体 [return val]; } 1) 无参数无返回 2) 有参数无返回 3) 有参数有返回 函数中 ...
- 从一次面试经历谈PHP的普通传值与引用传值以及unset
关于这个概念一般都会在PHP的第一堂课说变量的时候给介绍,并且我以前还给其他PHPer介绍这个概念.但是作为一个工作一段时间的PHPer的我,竟然在面试的时候一下子拿不定主意最后还答错了,很觉得丢脸( ...
- php普通传值和引用传值 (相当通俗易懂的一篇讲解)
首先,要理解变量名存储在内存栈中,它是指向堆中具体内存的地址,通过变量名查找堆中的内存; 普通传值,传值以后,是不同的地址名称,指向不同的内存实体; 引用传值,传引用后,是不同的地址名称,但都指向同一 ...
- Javascript模式(第四章函数)------读书笔记
一 背景 js函数的两个特点:1 函数是第一类对象(first-class object):2 函数可以提供作用域 1 函数是对象: 1 函数可以在运行时动态创建,还可以在程序执行过程中创建 2 可以 ...
- Java基础必备 -- 堆栈、引用传值、垃圾回收等
在Java中,对象作为函数参数的传递方式是值传递还是引用传递?String str = "abc" 与 String str = new String("abc&quo ...
- Python引用传值总结
Python函数的参数传值使用的是引用传值,也就是说传的是参数的内存地址值,因此在函数中改变参数的值,函数外也会改变. 这里需要注意的是如果传的参数类型是不可改变的,如String类型.元组类型,函数 ...
- PHP引用传值规范问题
在我上一篇: shopnc 商城源码阅读笔记--开篇概述 中,遇到了一个PHP引用传值导致的错误,情况大致如下: 在我查阅PHP官方文档 的中文版的时候 http://php.net/ma ...
- C++ primer(八)--内联函数 引用变量 引用传递函数参数 函数重载/模板/模板具体化
一.内联函数 常规函数和内联函数的区别在于C++编译器如何将他们组合到程序中.编译过程的最终产品是可执行程序--由一组机器语言指令组成.运行程序时,操作系统将这些指令载入到计算机内存中,因此每 ...
随机推荐
- shell函数返回值
1.用return作为函数的退出状态,然后通过echo $?来得到函数返回值,注意,return返回的值限定为0-255. 例子: #! /bin/bash sum() { let "z=$ ...
- 【ACM】NYOJ_288_Time_20130725
Time时间限制:1000 ms | 内存限制:65535 KB 难度:2描述 Digital clock use 4 digits to express time, each digit is ...
- pg 学习资料
文/谭峰 DBA,PostgreSQL专家 开源数据库 PostgreSQL 中文资料非常缺乏,很多社区朋友苦于上手的中文资料少,因此汇总收集以下 PostgreSQL 中文资料,包括 Postgre ...
- 小胖说事14--------IOS字体大小,字号的问题 PX转化为UIFont
PX和Font之间相互转换公示表: 计算公式为:font=(像素PX)/(96/72).
- VC ON_CONTROL_RANGE多个控件响应一个方法
步骤/方法 分三个步骤 在头文件里声明函数比如 afx_msg void onNum(UINT uID) 在.cpp文件里加入函数体 void CCalculatorDlg::OnNum(UINT u ...
- 使用golang来设计我们的Ubuntu Scope
我们知道golang越来越被非常多的开发人员来开发应用.go语言也能够用于开发Ubuntu Scope. 在今天的教程中.我们将具体介绍怎样使用go语言来开发我们的Scope.这对于非常多的不太熟悉C ...
- C++对象模型——关于对象(第一章)
第一章 关于对象 在C语言中,"数据"和"处理数据的操作(函数)"是分开声明的,也就是说,语言本身并没有支持"数据和函数"之间的关联性 ...
- Android 线程 Looper.prepare()、Looper.loop() 使用
优化项目过程中发现了一个非常Low的问题,整理一下.备忘: 说问题之前先看下HandlerThread的定义 一个封装了looper的线程: Looper用于封装了android线程中的消息循环. ...
- 弹出框中选项卡的运用(easyUI)
先看一下页面效果: 此处有两个知识点:一个是弹出框的运用,一个是选项卡的运用 分析一下该HTML代码,最外面一个div是弹出框的,默认是关闭状态,可通过ID来控制弹出框的开关,该div的样式是easy ...
- Linux Framebuffer 驱动框架之一概念介绍及LCD硬件原理【转】
本文转载自:http://blog.csdn.net/liuxd3000/article/details/17464779 一.基本概念 帧缓冲(Framebuffer)是Linux系统为显示设备提供 ...