首頁  >  文章  >  後端開發  >  php引用和指標的區別

php引用和指標的區別

王林
王林原創
2019-09-16 12:00:032912瀏覽

php引用和指標的區別

本質:

引用是別名,指標是位址

具體:

1、從現像上看,指標在運行時可以改變其所指向的值,而引用一旦和某個物件綁定後就不再改變。這句話可以理解為:指標可以被重新賦值以指向另一個不同的物件。但是引用則總是指向在初始化時被指定的對象,以後不能改變,但是指定的對像其內容可以改變。

2、從記憶體分配上看,程式為指標變數分配記憶體區域,而不為參考分配記憶體區域,因為引用宣告時必須初始化,從而指向一個已經存在的物件。引用不能指向空值。

3、從編譯上看,程式在編譯時分別將指標和引用加到符號表上,符號表上記錄的是變數名稱及變數所對應位址。指標變數在符號表上對應的位址值為指標變數的位址值,而引用符號表上對應的位址值為引用物件的位址值。

符號表生成後就不會再改,因此指標可以改變指向的物件(指標變數中的值可以改),而引用物件不能改。這是使用指標不安全而使用引用安全的主要原因。從某種意義上來說引用可以被認為是不能改變的指標。

4、不存在指向空值的引用這個事實,意味著使用引用的程式碼效率比使用指標的要高。因為在使用引用之前不需要測試它的合法性。相反,指針則應該總是被測試,防止其為空。

5、理論上,對於指標的級數沒有限制,但是引用只能是一級。如下:

 int** p1;         // 合法。指向指针的指针
 
  int*& p2;         // 合法。指向指针的引用
 
  int&* p3;         // 非法。指向引用的指针是非法的
 
  int&& p4;         // 非法。指向引用的引用是非法的

注意!上述讀法是從左到右。 

推薦教學:PHP影片教學

以上是php引用和指標的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn