變量名和變量地址之間是什么關系?
變量名是高級語言定義的一種東西,主要用來方便的尋址變量。在編譯過程中,每個變量都有一個變量名,每個名對應一個應用,也就是變量的第一個字節地址。
也就是說,變量名與其地址是一一對應的映射關系。但是編譯后變量名是不存在的,所以C必須有一個機制來區分與形式相似的變量名和真實地址。
對于變量A,不加意味著取A的值,加意味著取A在內存中的地址,后一個值只能賦給指針變量。其實后來發現這種設計有一些弊端,這也是為什么Java,C#刪除了它們的區分,統一使用引用(和指針略有不同,但機制是一樣的)。
地址符的作用,地址符是什么意思?
地址提取的功能是告訴系統定義的變量,該值存儲在內存空間中。scanf函數根據這個地址值尋址,然后從這個地址空間中取出我需要的數據值。對于變量來說,變量在內存中的地址只能通過ampa獲取,而對于指針變量和數組來說,不需要這種地址獲取。
C語言的指針不是地址嗎?為什么地址還要區分類型?指針的加法也好難,該怎么理解呢?
類型描述了指向內容的指針的數據長度。為了讓你不不正確地操作內容,C語言編譯器正在檢查類型。
當然,如果能保證邏輯和內容長度的正確性,也可以在C語言層面強制轉換成另一種指針類型。
在匯編語言中,沒有內容的類型,只有內容的長度。連內容的整數符號都沒有說清楚,整數的符號體現體現在操作數據的不同機器指令中。
C語言中指針類型的不同只是為了防止你在語法層面容易出錯。
