php中函数的形参与实参的问题说明
当实参个数<形参个数 时php会发出警告,因为php的解释机制会认为,有参数被定义了却没有被使用,那很可能会影响函数的功能。所以会发出警告。然而,当 实参个数>形参个数 时,php是不会报错的,它只会取前面的几个参数,多余的则将会丢弃。
在PHP中编写函数,一般情况下调用函数的时候,改变的值都是形参而不是实参.但是如果在形参中加入地址符时候就会改变实参的值,为什么?
<?php
//编写一个函数swap(),测试该函数的实参值无改变
function swap($a,$b) {
echo "<p>进入swqp()函数前<br>\n";
echo "交换前:形参a=$a,形参b=$b<br>\n";
$c=$b;
$a=$b;
$b=$c;
echo "交换后:形参a=$a,形参b=$b<br>\n";
echo "退出swap()函数<br></p>\n";
}
$variablea=5;
$variableb=10;
echo "调用swap()函数前: ";
echo "实参a=$variablea,实参b=$variableb<br>\n";
swap($variablea,$variableb);
echo "调用swap()函数后: ";
echo "实参a=$variablea,实参b=$variableb<br>\n";
?>
<?php
//测试swap()函数实参的值改变
function swap1(&$a,&$b) {
echo "<p>进入swap1()函数<br>\n";
echo "交换前: 形参a=$a,形参b=$b<br>\n";
$c=$b;
$a=$b;
$b=$c;
echo "交换后: 形参a=$a,形参b=$b<br>\n";
echo "退出swap()函数<br></p>\n";
}
$variablea=5;
$variableb=10;
echo "调用swap1()函数前: ";
echo "实参a=$variablea,实参b=$variableb<br>\n";
swap1($variablea,$variableb);
echo "调用swap1()函数后: ";
echo "实参a=$variablea,实参b=$variableb<br>\n";
?>
//上面的两个例子就是说明,求教了~~~
相关推荐
-
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
我选择了jQuery,最主要是它的思想"write less,do more",因为我是一个挑剔的人,以前写过的代码,会时不时翻出来,看看有没有可以精简,优化的地方.一来是对不断学习的推动,二来可以将新的思想,技术应用到里面去. 对于jQuery插件的写法,以前就有介绍过,网上也有很多例子. 这里简要地进行些写法,主要是简写的说明,见下列代码: <script type="text/javascript" src="jquery-1.4.2.js&q
-
javascript管中窥豹 形参与实参浅析
引子: 今天看到别人的一个题目: 复制代码 代码如下: function fn(x){ x = 10; arguments[0] = 20; console.log(x,arguments[0]) } fn() 感觉自己对这也是一知半解,自己也可以试一下,于是就特地分析一下. 本想从语言的角度来分析,无奈功力不够,只能粗浅的尝试一下,于是称之管中窥豹,还望大牛指正. 这是昨天写的,今天吃饭的时候又想了一下,想来想去感觉有些问题还是说得不靠谱,于是又试着修改了一下. 每一本js入门书籍都会提到,J
-
jquery封装插件时匿名函数形参和实参的写法解释
在jquery插件中我们经常看到以下这段代码 ;(function ( $, window, document, undefined ){ //函数体内具体代码 })(jQuery, window,document); 1.代码最前面的分号,可以防止多个文件压缩合并以为其他文件最后一行语句没加分号,而引起合并后的语法错误. 2.匿名函数(function(){})();:由于Javascript执行表达式是从圆括号里面到外面,所以可以用圆括号强制执行声明的函数.避免函数体内和外部的变量冲突. 3
-
C++形参与实参的区别实例解析
本文以实例阐述了C++中形参与实参的区别,有助于读者加深对于C++形参与实参的认识. 形参出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用.实参出现在主调函数中,进入被调函数后,实参变量也不能使用. 形参和实参的功能是作数据传送.发生函数调用时, 主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送. 1.形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单元.因此,形参只有在函数内部有效. 函数调用结束返回主调函数后则不能再使用该
-
php中函数的形参与实参的问题说明
当实参个数<形参个数 时php会发出警告,因为php的解释机制会认为,有参数被定义了却没有被使用,那很可能会影响函数的功能.所以会发出警告.然而,当 实参个数>形参个数 时,php是不会报错的,它只会取前面的几个参数,多余的则将会丢弃. 在PHP中编写函数,一般情况下调用函数的时候,改变的值都是形参而不是实参.但是如果在形参中加入地址符时候就会改变实参的值,为什么? 请看下面的例子: 复制代码 代码如下: <?php //编写一个函数swap(),测试该函数的实参值无改变 functio
-
C语言中形参和实参详解及实例代码
形式参数和实际参数 函数的参数分为形参和实参两种.在本小节中,进一步介绍形参.实参的特点和两者的关系.形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用.实参出现在主调函数中,进入被调函数后,实参变量也不能使用.形参和实参的功能是作数据传送.发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送. 函数的形参和实参具有以下特点: 1.形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元.因此,形参只有在函数内部有效.函
-
C++中函数的用法小结
函数在C++中的使用,无非2种地方,一处是函数的定义,一处是函数的调用.而函数的定义则非常简单,由三个部分组成:函数的返回类型.函数名和函数的形参表.当然,这里不同的函数定义可以还会稍有不同,比如类的成员函数.内联函数等.这里我们主要讨论函数的调用时需要注意的一些问题. 一.参数传递 我们将函数定义或声明里的参数叫形参,而在调用函数时传入的参数叫实参.那么根据形参类型的不同,有几下形式的参数传递. 1,非引用形参 1)普通的内置类型 普通非引用类型的参数通过复制对应的实参实现形参的初始化.当用实
-
C语言形参和实参传值和传址详解刨析
目录 例题 分析 实参与形参 实际参数(实参): 形式参数(形参): 修改 分析 传值和传址 传值调用 传址调用 讲解知识点之前,我们先来做一道题! 例题 写一个函数可以交换两个整形变量的内容 例如: 交换前:20 30 交换后:30 20 题目让我们用函数的方式写 #include <stdio.h> void Swap1(int x, int y) { int z = 0; z = x; x = y; y = z; } int main() { int a = 0; int b = 0;
-
Java必踩的坑之方法中形参、实参传递
首先亮明Java中方法参数传递的规则,这两点很重要: 如果实参是基本类型(包括包装类型)或者String,则实参不会变(传的是值): 如果实参是对象集合或者数组,则实参会改变(传的是引用). 上面这两条比较简单,笔者就不展开说了,这里只说一点,关于方法中引用的传递,很多人会踩坑,如下: 我们先以数组举例,如下代码,很简单的几行,大家猜一下会最终输出的结果是什么样子的呢? public class PassByValueDemo { public static void main(String[]
-
Lua中函数与面向对象编程的基础知识整理
函数 1. 基础知识 调用函数都需要写圆括号,即使没有参数,但有一种特殊例外:函数若只有一个参数且参数是字面字符串或table构造式,则圆括号可有可无,如dofile 'a.lua',f{x=10, y=20}. Lua为面向对象式的调用提供冒号操作符的特殊语法,如o.foo(o, x)等价于o:foo(x).和Javascript类似,调用函数时提供的实参数量可以与形参数量不同,若实参多了则舍弃,不足则多余的形参初始化为nil. 1.1 多重返回值 Lua允许函数返回多个结果,函数返回如ret
-
C++中函数使用的基本知识学习教程
函数是执行某种操作的代码块.函数可以选择性地定义使调用方可以将实参传递到函数中的输入形参.函数可以选择性地返回值作为输出.函数可用于在单个可重用块中封装常用操作(理想情况是使用可清晰地描述函数行为的名称).以下函数从调用方接受两个整数并返回其总和:a 和 b 是 int 类型的参数. int sum(int a, int b) { return a + b; } 可以从程序中任意数量的位置调用函数.传递给函数的值是实参,其类型必须与函数定义中的形参类型兼容. int main() { int i
-
Python3中函数参数传递方式实例详解
本文实例讲述了Python3中函数参数传递方式.分享给大家供大家参考,具体如下: 之前在看北理工嵩天等老师的python3的课程,在第五周中老师讲到了函数的调用传递.老师讲了这样一个例子 #处理多个银行账户的余额信息 def addInterest(balances, rate): for i in range(len(balances)): balances[i] = balances[i] * (1+rate) def test(): amounts = [1000, 105, 3500,
随机推荐
- AngularJS教程之环境设置
- 用js实现过滤script的正则
- thinkphp3.x中变量的获取和过滤方法详解
- web高性能开发系列随笔 BearRui(AK-47)版
- java.util.Date与java.sql.Date的区别
- 在Python中操作时间之tzset()方法的使用教程
- jQuery设置Cookie及删除Cookie实例分析
- Android编程实现TextView字体颜色设置的方法小结
- JavaScript学习笔记记录我的旅程
- 用html为flash页面添加音乐
- python正则表达式之作业计算器
- vue 父组件给子组件传值子组件给父组件传值的实例代码
- Android 配置打包签名信息的两种方法
- 通过spring boot 设置tomcat解决 post参数限制问题
- vue实现Excel文件的上传与下载功能的两种方式
- vue实现直播间点赞飘心效果的示例代码
- 原生JS实现手动轮播图效果实例代码
- 易语言读取文本行数的方法
- 易语言通过算法计算出酷狗音乐下载地址的代码
- Python判断两个文件是否相同与两个文本进行相同项筛选的方法