1. 程式人生 > >PHP 傳值和傳引用、傳地址的區別

PHP 傳值和傳引用、傳地址的區別

傳值,
   是把實參的值賦值給行參
   那麼對行參的修改,不會影響實參的值

   傳地址
   是傳值的一種特殊方式,只是他傳遞的是地址,不是普通的如int
   那麼傳地址以後,實參和行參都指向同一個物件

   傳引用
   真正的以地址的方式傳遞引數
   傳遞以後,行參和實參都是同一個物件,只是他們名字不同而已
   對行參的修改將影響實參的值  

  $a = "123";
  $b = &$a;
  echo $a."-".$b; // 輸出:123-123
  echo "<br/>";
  $b = "456465"; // 輸出:456465-456465
  echo $a."-".$b;

  // 結論 :
  // PHP 傳引用時 形參 發聲改變的時候 實參也發生改變;

僅討論一下值傳遞和引用:
   所謂值傳遞,就是說僅將物件的值傳遞給目標物件,就相當於copy;系統將為目標物件重新開闢一個完全相同的記憶體空間。
   所謂引用,就是說將物件在記憶體中的地址傳遞給目標物件,就相當於使目標物件和原始物件對應同一個記憶體儲存空間。此時,如果對目標物件進行修改,記憶體中的資料也會改變。

相關推薦

vue事件發射與接收(可實現頁面非父子元件)

vue2.0中可以使用 $emit, $on, $off 分別來分發、監聽、取消監聽事件。 1).給data新增一個 名字為eventhub 的空vue物件,就可以在任何元件都可以呼叫事件發射接收的方法了,在main.js中新增: new Vue({   el: '#app', &

PHP 引用地址區別

傳值,    是把實參的值賦值給行參    那麼對行參的修改,不會影響實參的值    傳地址    是傳值的一種特殊方式,只是他傳遞的是地址,不是普通的如int    那麼傳地址以後,實參和行參都指向同一個物件    傳引用    真正的以地址的方式傳遞引數    傳遞以

php方法引用性能比較

1.0 傳遞 function ++ func fir reac bbb 發的 測試代碼test.php: <?php function microtime_float() { list($usec, $sec) = explode(" ", microt

C++快速入門---引用(6)

C++快速入門---傳值、傳值和傳引用(6)     傳值 #include <iostream> void changeAge(int age, int newAge); // 如果想要實現計劃功能,需要怎麼改? main() { int a

PHP普通引用區別

php賦值有兩種方式 1.傳值賦值 2.引用賦值 <?php //php傳值方式 //傳值賦值(兩個人看兩臺電視) $a = 'zhangsan'; $b = $a; echo $a, '-', $b . '&

php引用區別(引用區別)

//傳值賦值和引用賦值區別 /*傳值賦值: a.變量表:放變數名 指向它們各自的位置(盒子) b.位置(盒子):存放值和型別*/ $a1 = 234; $a2 = 34556; $a1 = $a2;

Java實參形參與引用

函數 有效 順序 數組 形參 div spa stat 數據 實參和形參的定義: 形參出現函數定義中,在整個函數體內都可以使用,離開函數則不能使用。 實參出現在主函數中,進入被調函數後,實參變量也不能使用。 形參和實參的功能是做數據傳送。發生函數調用時,主調函數把實參的值傳

引用

編譯 float 問題 副本 搜索 lean 對象引用 指向 特殊 Java中傳值和傳引用的問題   值傳遞(call by value):當基本類型作為參數傳入方法時,無論該參數(原型變量的一個值得拷貝)在方法內怎樣被改變,外部的變量原型總是不變的。   改變的只是原型變

PHP中關於href的問題

問題:在網頁開發過程中或多或少都會遇見如:index.php?id=1&page=2這類的東西,那麼我們如何在index.php中把傳過來的值獲取到呢? 下面是在javascript中獲取href傳過來的值: 方法一:用正則表示式 function getQueryStrin

Java學習筆記之物件引用總結

<strong><span style="font-size:18px;"> public class Test { public static void main(String[] args) { // TODO Auto-generated method s

Java 引用區別

首先對傳值和傳引用要有個基本的概念 傳值:傳遞的是值的副本。方法中對副本的修改,不會影響到呼叫方。 傳引用:傳遞的是引用的副本,共用一個記憶體,會影響到呼叫方。此時,形參和實參指向同一個記憶體地址。對

引用

一、 函式引數傳遞機制的基本理論   函式引數傳遞機制問題在本質上是呼叫函式(過程)和被呼叫函式(過程)在呼叫發生時進行通訊的方法問題。基本的引數傳遞機制有兩種:值傳遞和引用傳遞。以下討論稱呼叫其他函式的函式為主調函式,被呼叫的函式為被調函式。   值傳遞(passl

golang引用

1.定義: b = a; b.modify(); 如果b的修改不會改變a的值,那麼是傳值;否則,是傳引用 2.golang中大多數是傳值的,有: 基本型別:byte,int,bool,string 複

java引用的問題,String型別不會改變!

java傳值和傳引用的問題,我們都知道,類,陣列,介面和String等等引用資料型別都是傳引用,在方法中修改了引用型別的變數會改變原變數,而像基本資料型別都是傳值,所以不會改變,但是String型別也是

型別引用型別,形參實參,引用

    C# 中有兩種型別:引用型別和值型別。引用型別的變數儲存對其資料(物件)的引用(地址),而值型別的變數直接包含其資料(副本)。     對於引用型別,兩種變數可引用同一物件;因此,

Java中引用區別

宣告:此文是作為本人自己學習的心得與總結,同時也是與同學們進行交流,如果有錯誤的地方,希望同學們進行指正。        在這裡,要想搞清楚二者的區別,那麼首先明白兩個概念,“傳值”、“傳引用”。        1、傳值:傳值就是指將一個值傳遞到方法的內部。例如int a

js- 引用複製(址)

好像一般很少人講到js中的引用和複製,不過弄清楚這個概念可以幫助理解很多東西 先講一下很基礎的東西,看看js中幾種資料型別分別傳的什麼引用:物件、陣列、函式複製:數字、布林字串單獨說明,因為它的特殊性,無法確定是傳遞引用還是複製數值(因為字串的值是沒法改變的,所以糾結這個問題

總結java方法(函式)引用的問題

java方法中傳值和傳引用的問題是個基本問題,但是也有很多人一時弄不清。 (一)基本資料型別:傳值,方法不會改變實參的值。 public class TestFun { public static void testInt(int i){    i=5;    }  public static void m

Java中引用

原理:對於基本型別的變數,Java中時傳的值的副本,而對於一切的物件型變數,Java都是傳引用的副本。 程式碼示例: import java.util.*; public class Test{ public static void main(String[] args)

如果 bject 發生 ext ask 不變 bool 內存空間 對象 基本數據類型和String類型作為參數時,為傳值方式,只把值傳入方法,不管在方法中怎麽處理這個參數,原值不變;(基本數據類型見博客) 其他引用類型作為參數時,為傳址方式,將指向內存中的地址傳入方法,方法