通過空間的標識符來處理該空間數據的方式稱為直接引用。處理簡單的數據時,直接引用的形式簡單、容易實現,但用來處理大量數據卻不簡單。例如,存儲1萬個整數需要1萬個名稱,傳遞1萬個數據需要1萬次賦值,這都是既繁瑣又低效的操作。而且1萬個整數一般還會是一個序列,數據之間具有邏輯上的前后順序,那么按邏輯上的順序去處理這些數據就需要先按邏輯的順序存儲這些數據。既要表示數據,又要表示數據之間的關系,這是直接引用方式難以實現的。
為了解決這個問題,我們參考機器語言中的要素——地址。機器指令由操作碼和操作數組成,操作數一般是數據的地址。在機器語言程序中,地址是處理和數據之間的媒介。在機器語言程序設計中,一個重要的步驟是為數組安排空間,以確定它們的地址??臻g相鄰,地址就容易計算。按照這種邏輯可以得出一個很自然的設計方案:一組類型相同、邏輯上具有前后關系的數據存儲在一組前后相鄰的空間,這樣可以通過一個數據的地址簡單地計算出其余數據空間的地址,然后通過空間地址(而不是名稱)去處理數據,我們稱這種訪問方式為間接引用。
要實現這種設計,就需要把這組相鄰的數據空間作為一個整體以及相應的地址都引入C語言類型。
1指針常量
1.1指針的類型
變量的名稱經過編譯之后就在系統內部“消失”了,留下了地址和類型,地址是該變量空間的起始地址,類型是該變量的類型(見圖1中的表)?!?br>