您好,登錄后才能下訂單哦!
包括 C、C++ 在內的一些語言支持指針。其他語言包括 C++、Java、Python、Ruby、Perl 和 PHP 都支持引用。從表面上看,引用和指針非常相似,它們都用來讓一個變量提供對另一個變量的訪問。
由于兩者都提供了許多相同的功能,所以常常不清楚它們各自的內部機制有什么不同。在本文中,我將說明指針和引用之間的區別。
為什么這很重要
指針是 Go 語言的核心。大多數程序員都是在上面提到的一種語言的基礎上學習 Go 的。因此,理解指針和引用之間的區別對于理解 Go 至關重要。
即使你使用過具有指針的語言,Go 對指針的實現也不同于 C 和 C++,因為它保留了引用的一些優秀屬性,同時保留了指針的功能。
本文的其余部分旨在廣泛地討論引用的概念,而不是具體的實現。我們將使用 Go 作為指針的參考實現。
有什么不同?
指針變量存儲的是另一個變量的地址。
引用變量指向另外一個變量。
為證明我們的觀點,用 C++ 舉個例子,它同時支持指針和引用。
int i = 3;2int *ptr = &i;3int &ref = i;
第一行定義了變量 i;第 2 行定義了一個指向變量 i 內存地址的指針 ptr;第 3 行定義了一個指向變量 i 的引用 ref。
不僅操作符不同,而且使用的方法也不同。對于指針,必須使用 * 操作符來解引用。對于引用,不需要任何操作符。據了解,你傾向于使用引用的變量。
繼續我們的示例,下面兩行代碼都將把 i 的值更改為13。
ptr = 13; ref = 13;
你可能會問,如果我嘗試直接訪問變量 ptr 而不使用解引用。這就引出了指針和引用之間的第二個關鍵區別。指針可以重分配,而引用不能。換句話說,指針可以被分配另一個不同的地址。
以上就是golang 引用和指針的區別的詳細內容,更多請關注億速云其它相關文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。