都說go指著跟 c 的比較像,其實不是很明白普通變數和指標的區別
看到有人說 其實 普通變數 是程式創造出來的,比如說 c 中
a int
那麼在編譯時 就會有 [a 位址 int] 這樣來標識記憶體
普通變數a其實是語言本身創造了,是為了更方便的表示記憶體。我們對a進行訪問其實就是直接對記憶體進行訪問。至於a表示的記憶體的位址是多少,程式設計師一般不用關心。編譯器會自動分配位址,也就是常說的為a分配乙個位址。如果想知道a的位址也可以通過&a得知。我的理解是 普通變數 就像是 房間(記憶體)外面的 門牌號(總經理室),指標就是這個房間的位址(a座701)
變數是執行時系統給這個記憶體起的別名,記憶體位址是唯一的,程式中當我想拿到這個記憶體的值的時候,因為知道它的別名,所以直接用別名訪問就可以得到值,又或者我能知道它唯一的位址我也能得到它的值,其實是兩種不同的記憶體訪問方式,但是變數是會變的,位址是不會變的。比如在go中
package main
func main()
看到有個解釋還可以,是說指標和普通變數區別的
1+2這個表示式永遠得值3
a+b這個表示式只依賴於a,b的值—–按名字訪問稱為直接訪問
*p + *q 這個表示式的值隨著p,q指向的變數不同而不同—-按指標訪問稱為間接訪問
直接代表簡單—-用槍剌只能剌到對手的正面
間接代表靈活—-用三截棍卻能打到對手的背面
go 指標陣列 go語言中的指標陣列
宣告乙個包含有5個整數指標型別的陣列,我們可以在初始化時給相應位置的元素預設值。下面是給索引為0的元素乙個新建的的int型別指標 預設為0 給索引為1的元素指向值v的位址,剩下的沒有指定預設值的元素為指標的zero值也就是nil package main import fmt func main f...
go包的理解
結論 import時指定的字串,是相對於 gopath的目錄路徑,告訴了go,要去載入這個目錄下所有的包檔案 不包括子目錄中的檔案 乙個目錄中所有的原始檔 不包括子目錄 代表了單獨的乙個包,這些原始檔內的package關鍵字指出的包名,必須一致,否則無法被使用 import指定的載入目錄 目錄中的原...
C語言指標的理解以及指標的指標的理解
指標指向的是記憶體位址編號,記憶體位址編號指向的是對應的內容。我們需要乙個變數,來儲存記憶體位址編號,這個變數的值是乙個記憶體位址編號,但是我們可以通過修改變數的值,來不斷的改變記憶體位址編號。但是,我們如果需要改變該記憶體位址編號的值時,就需要對該記憶體位址編號的值進行修改,而不改變記憶體位址編號...