我正在學習圍棋,我嘗試了'&'來獲取內存地址。但是我不知道'&i'是什么意思,'i'來自i := &b,b是一個int。b := 7i := &bfmt.Println(&b) //print => 0xc000088000fmt.Println(i) //print => 0xc000088000fmt.Println(&i) //print => 0xc00000e018在這種情況下,'&i' 的含義是什么?
3 回答
ITMISS
TA貢獻1871條經驗 獲得超8個贊
&是地址運算符,評估它會得到一個內存地址,當傳遞給包時fmt,內存地址通常以十六進制格式打印(“base 16 notation, with leading 0x”)。
內存地址就是:內存地址。int它是變量的地址還是 a?string,或者指針類型的變量都沒有關系。打印時,它們看起來都“相同”。
地址運算符:
x對于類型的操作數T,尋址操作&x生成一個*T指向類型的指針x。
所以地址運算符給你一個指針值,當你取消引用時,你會得到原始值。
&b將是變量的地址b,類型為*int,當您取消引用時:*b將為您提供(的值)b。
&ii將是類型為 的變量的地址**int,當您取消引用時:*i將為您提供的值i是 的地址b。因此,如果您還取消引用 that:?**(&i),那也會給您 (的價值)?b。
ABOUTYOU
TA貢獻1812條經驗 獲得超5個贊
所以&運算符生成一個指向它的操作數的指針。所以&i基本上生成一個指針,i它已經是一個指針b,它只是一個內存地址。所以當你這樣做時,fmt.Println(&i)它會打印出i.
- 3 回答
- 0 關注
- 264 瀏覽
添加回答
舉報
0/150
提交
取消
