目錄
回复讨论(解决方案)
首頁 後端開發 php教程 请问谁能给个解释?关于引用“&”

请问谁能给个解释?关于引用“&”

Jun 23, 2016 pm 01:50 PM
引用 解釋

class Test {	protected $var = null;	function __construct(&$var) {		$var['z']=2;		$this->var = &$var;		$this->var['xx']=2;	}}$x=['b'=>2];$d=new Test($x);print_r($x);
登入後複製


以上代码如果把$this->var = &$var变成$this->var = $var;
则xx=2这句不生效。$var不是已经是引用了吗?


回复讨论(解决方案)

你修改的是$this->var 但引用的是构造函数的临时变量$var
所以$x不变
$this->var['xx']=2; 再改成$var['xx'] = 2;

你修改的是$this->var 但引用的是构造函数的临时变量$var
所以$x不变
$this->var['xx']=2; 再改成$var['xx'] = 2;



不太明白你的意思。$this->var难道不是指外部变量$x的引用?因为构造中用的是(&$var)这个$var就是引用。而把这个引用给了类中的var

有什么问题吗?很正常啊,是引用地址了。

class Test {    protected $var = null;    function __construct(&$var) {        $var['z']=2;        $this->var = &$var;        $this->var['xx']=2;    }}  $x=array('b'=>2);$d=new Test($x);print_r($x);
登入後複製


Array
(
    [b] => 2
    [z] => 2
    [xx] => 2
)

$x = array('b'=>2);
$a =& $x; //$a 是 $x 的引用
$a['a'] = 'a'; //所以对 $a 的改变会影响到 $x
$b = $a; //$b 不是 $a 的引用
$b['b'] = 'b'; //所以对 $b 的改变不会影响到 $a,更不会传递到 $x
print_r($x);

http://www.cnblogs.com/thinksasa/p/3334492.html
看看就明白了

$this->var = $var; 不是引用,$this->var修改不?影?$var
$this->var = &$var; 是引用 ,$this->var修改?影?$var

不太明白你的意思。$this->var难道不是指外部变量$x的引用?因为构造中用的是(&$var)这个$var就是引用。而把这个引用给了类中的var



我好像明白你的疑问在哪了
如果$b引用了$a,你再用$b给$c赋值,如果不再次引用$b,$c得到的还是一个新建内存数据,想要使$c引用到$a,那么必须$c = &$b



不太明白你的意思。$this->var难道不是指外部变量$x的引用?因为构造中用的是(&$var)这个$var就是引用。而把这个引用给了类中的var



我好像明白你的疑问在哪了
如果$b引用了$a,你再用$b给$c赋值,如果不再次引用$b,$c得到的还是一个新建内存数据,想要使$c引用到$a,那么必须$c = &$b

看了下手册,貌似php的&与c语言中的&根本不是一个概念。

php 的引用和 c语言 的指针当然不是一回事
但你主贴中的代码的表现和等价c代码的表现是一样的

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1324
25
PHP教程
1272
29
C# 教程
1251
24
2.8k螢幕是什麼解析 2.8k螢幕是什麼解析 Jan 02, 2024 pm 12:21 PM

我們常在購買電視,電腦或手機時看到多少K螢幕這種介紹,例如2.8K螢幕。每當這個時候就會有對電子設備不太了解的小夥伴好奇這個2.8K螢幕到底是什麼意思,解析度又是什麼。 2.8k螢幕什麼意思答:2.8k螢幕的意思是螢幕的解析度為2880*18002K就是橫向像素點數量大於2000,相同大小的螢幕,解析度越高畫面品質越好。解析度介紹1、由於螢幕上的點、線和麵都是由像素組成的,顯示器可顯示的像素越多,畫面就越精細,同樣的螢幕區域內能顯示的資訊也越多。 2.解析度越高,像素的數目越多,感應到的影像越

如何在蘋果筆記中使用區塊引號 如何在蘋果筆記中使用區塊引號 Oct 12, 2023 pm 11:49 PM

在iOS17和macOSSonoma中,Apple為AppleNotes新增了新的格式選項,包括區塊引號和新的Monostyle樣式。以下是使用它們的方法。使用AppleNotes中的其他格式選項,您現在可以在筆記中新增區塊引用。區塊引用格式可以輕鬆地使用文字左側的引用欄直觀地偏移部分的寫作。只需點擊/點擊“Aa”格式按鈕,然後在鍵入之前或當您在要轉換為區塊引用的行上時選擇區塊引用選項。此選項適用於所有文字類型、樣式選項和列表,包括清單。在同一「格式」功能表中,您可以找到新的「單樣式」選項。這是對先前「等寬

C++編譯錯誤:未定義的引用,該怎麼解決? C++編譯錯誤:未定義的引用,該怎麼解決? Aug 21, 2023 pm 08:52 PM

C++是一門廣受歡迎的程式語言,但是在使用過程中,經常會出現「未定義的引用」這個編譯錯誤,給程式的開發帶來了許多麻煩。本篇文章將從出錯原因和解決方法兩個方面,探討「未定義的引用」錯誤的解決方法。一、出錯原因C++編譯器在編譯一個原始檔時,會將它分為兩個階段:編譯階段和連結階段。編譯階段將原始檔中的原始碼轉換為組譯程式碼,而連結階段將不同的原始檔合併為一個可執行文

C++ 函式回傳參考型別有什麼好處? C++ 函式回傳參考型別有什麼好處? Apr 20, 2024 pm 09:12 PM

C++中的函數傳回參考類型的好處包括:效能提升:引用傳遞避免了物件複製,從而節省了記憶體和時間。直接修改:呼叫方可以直接修改傳回的參考對象,而無需重新賦值。程式碼簡潔:引用傳遞簡化了程式碼,無需額外的賦值操作。

如何使用 C++ 引用和指標傳參? 如何使用 C++ 引用和指標傳參? Apr 12, 2024 pm 10:21 PM

C++中引用和指標都是傳遞函式參數的方法,但有差別。引用是變數的別名,修改引用會修改原始變量,而指標儲存變數的位址,修改指標值不會修改原始變數。在選擇使用引用還是指標時,需要考慮是否需要修改原始變數、是否需要傳遞空值和效能考量等因素。

C++語法錯誤:函數傳回指標或引用時,不能傳回局部變數或臨時對象,該如何處理? C++語法錯誤:函數傳回指標或引用時,不能傳回局部變數或臨時對象,該如何處理? Aug 22, 2023 am 09:22 AM

C++是一種物件導向的程式語言,它的靈活性和強大性通常為程式設計師提供了很大的幫助。然而,也正是因為其彈性,程式設計時難以避免各種小錯誤。其中一個很常見的錯誤就是函數傳回指標或引用時,不能傳回局部變數或臨時物件。那麼該如何處理這個問題呢?本文將詳細介紹相關的內容。問題的原因在C++語言中,局部變數和臨時物件是在函數運行期間動態分配的。當函數結束時,這些局部變數和臨

深入解析C++中的指標與引用,優化記憶體使用 深入解析C++中的指標與引用,優化記憶體使用 Jun 02, 2024 pm 07:50 PM

透過使用指標和引用,可以優化C++中的記憶體使用:指標:儲存其他變數位址,可指向不同變量,節約內存,但可能產生野指標。引用:別名為另一個變量,始終指向同一個變量,不會產生野指針,適用於函數參數。透過避免不必要的複製、減少記憶體分配和節省空間,優化記憶體使用可以提升程式碼效率和效能。

C++ 函式常數參考參數傳遞的注意事項 C++ 函式常數參考參數傳遞的注意事項 Apr 21, 2024 am 08:30 AM

常數引用參數傳遞可確保函數內參數不變性,有以下優點:參數不可變性:函數無法修改常數參考參數。提高效率:無需建立參數副本。錯誤偵測:嘗試修改常數參考參數會觸發編譯時錯誤。

See all articles