這裡為什麼一定要賦值變數位址而不是變數值呢? 賦值了位址為什麼執行結果還是值?

時間 2021-06-08 21:43:41

1樓:wj742421292

long int* 是型別宣告, 將p1, p2宣告為指標型別, 因此儲存位址,

*p1, *p2中, *是單目運算子, 取變數p1, p2中位址的值給變數p賦值什麼型別都可以, 只不過編譯器按照宣告的型別來處理變數p, 即便賦值不是記憶體位址,

編譯器依然會把變數p的內容當作記憶體位址來處理, 試圖去訪問p的內容對應的記憶體位址的內容, 此時就會出錯

2樓:SynchronizX

既然你知道&表示了變數的位址,那你也應該知道*表示這個變數是乙個指標。

所以,p開頭的變數都是指標,這個變數的型別叫「指向xx型別的指標」,內部儲存的內容其實也是乙個數字。比如說整數型別int表達了他所指向的記憶體位置儲存了乙個將要被解釋為整數的某個數字,而指標型別的變數表明了他的記憶體位置儲存了一段要被解釋為位址的數字。這就好像我在紙上寫0708,他可以被解釋為7月8號、708份某種貨物,甚至經七路和緯八路交叉口。

在紙上有708份貨物,和在經七路緯八路交叉口有貨物,這兩種解讀方式其實就是指標和普通變數的區別。

在變數宣告的時候,星號是一種識別符號,你可以理解為給乙個名詞做修飾。變數名是乙個名詞,你通過給這個名詞不斷增加形容詞和副詞進行修飾,來告訴編譯器究竟你想要如何解釋分配給你的空間中,你將要放入數字應該如何解釋。而在使用這個變數的過程中,你再次使用到了星號,這個星號不再是識別符號了,而是一種運算子,這個運算叫解引用,和加減乘除類似,都是對這個數字進行的一種操作,而這個星號的操作就是去訪問位址是這個數字的記憶體位置。

總的來說,為什麼要用位址賦值?因為指標儲存的是位址,要先有已存在的東西,再有那個存放點的位址,所以你不能直接對乙個指標賦乙個想要儲存的值來達到「我要申請乙個空間儲存我想儲存的內容」這種目的,因為這個目的本身和申請變數並儲存資料是相同作用的。為什麼執行結果還是值?

我不知道你說的是列印的第一行還是第二行,第一行是值是因為位址也是一種數字,第二行是值是因為你進行了解引用,也就是(p1和p2)親自上門開啟倉庫(a和b)取出了倉庫裡面的數字。

為什麼一定要買房而不是租房呢?

桃小葉 大部分情況下,買房肯定是比租房住著舒服。人活一世,衣食住行,住是非常重要的基本需求。租房是借住別人家,人在屋簷下不得不低頭。想打造成自己溫暖的小窩也沒戲。我感觸很深的是,喜歡騎行,但是自行車放房間裡佔地方,也不能給掛牆上,因為房間不允許改造。於是小小的房間裡,就一直被自行車佔著一塊地方 有自...

為什麼劉正風一定要洗手, 而不是直接歸隱?

申權認真生活 你把左冷禪和劉正風看成夫妻,曲洋看成小三,洗手看成離婚就好理解了。武林中正邪對立和夫妻鬧矛盾是一樣的,屬於家庭糾紛。如果婚內丈夫出軌被妻子娘家人惡揍一頓,警察都不愛管。但如果離了婚,前夫哪怕天天換著玩,前妻也沒有干涉的理由了。歸隱約等於分居,不管你分居多久,只要沒登記離婚,你就是婚內。...

人為什麼一定要戀愛,人為什麼一定要結婚?

如果你不是生活中絕對的強人老婆是很有必要找的無論是傳宗接代還是說面對生活 戀愛使人年輕對生活充滿熱情,人的年紀越來越大如果是乙個人的話會感到孤獨,而且有莫名的恐懼,害怕老了以後乙個人 完全沒必要,你又不是為了別人活著,主要是自己開心,當然啦,在你有一定自身能力的前提下,很多人結婚也不一定是為了愛,有...