簡體   English   中英

當我:=&b時,“&i”是什么意思

[英]What's the meaning of '&i' when i := &b

我正在學習編程,我嘗試了'&'來獲取內存地址。但是我很想知道'&i'是什么意思,而'i'來自i:=&b,b是一個整數。

b := 7
i := &b
fmt.Println(&b) //print => 0xc000088000
fmt.Println(i) //print => 0xc000088000
fmt.Println(&i) //print => 0xc00000e018

在這種情況下,“&i”是什么意思?

&地址運算符 ,評估得出一個內存地址,該內存地址在傳遞給fmt包時,通常以十六進制格式(“ base 16表示法,前導0x”)打印。

內存地址就是這樣:一個內存地址。 不管是int變量或string的地址,還是指針類型的變量的地址。 當打印時,它們看起來都“相同”。

地址運算符:

一個操作數x型的T ,寫入動作&x生成類型的指針*Tx

因此,地址運算符為您提供了一個指針值,當您取消引用時,該指針值將返回原始值。

&b將是可變的地址b ,類型*int ,其中,當取消引用: *b會給你(的值) b

&i**int類型的變量i的地址,當您取消引用時: *i將為您提供i的值, i b的地址。 因此,如果您還取消引用**(&i) ,那也將給您b的值。

這里&b返回的地址b和相同的地址被存儲在i 由於i也是變量,因此&i將返回變量i的地址。

因此, &運算符生成一個指向其操作數的指針。 因此&i基本上會生成一個指向i的指針,該指針已經是一個指向b的指針,而b只是內存地址。 所以,當你做fmt.Println(&i)它打印的內存地址i

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM