抽象點說,就是以一種統一的方式產生對不同資料結構的元素的引用
理解指標要注意以下幾個點:
-- 每個指標都有型別,型別決定指標移動時的步長(假設可移動:++ / -- / +n / -n)
-- 從內容上講,指標就是地址,尤其是在機器級層面上
-- 對指標進行型別轉換,僅僅是改變了解釋指標所指記憶體區域的方式,位模式沒有變
-- 指標可以指向函式,其值是函式對應機器程式碼的第一條指令的地址
-- 指標和陣列關係曖昧,如果你明白比例變址定址,你就能清除陣列名,下標,指標型別之間的關係,簡單說:陣列名即基地址(立即數),下標即變址,指標型別即比例因子,而指標的值就是:偏移量 + 變址 * 比例因子 +基地址【IA32】,這樣你就明白陣列名是個常量(在機器眼裡就是個立即數,定址時對變址沒有限制也就說明了C語言對下標越界不檢查)
細節請參見: CS:APP 193-192頁;
南京大學幕課: 計算機系統基礎
抽象點說,就是以一種統一的方式產生對不同資料結構的元素的引用
理解指標要注意以下幾個點:
-- 每個指標都有型別,型別決定指標移動時的步長(假設可移動:++ / -- / +n / -n)
-- 從內容上講,指標就是地址,尤其是在機器級層面上
-- 對指標進行型別轉換,僅僅是改變了解釋指標所指記憶體區域的方式,位模式沒有變
-- 指標可以指向函式,其值是函式對應機器程式碼的第一條指令的地址
-- 指標和陣列關係曖昧,如果你明白比例變址定址,你就能清除陣列名,下標,指標型別之間的關係,簡單說:陣列名即基地址(立即數),下標即變址,指標型別即比例因子,而指標的值就是:偏移量 + 變址 * 比例因子 +基地址【IA32】,這樣你就明白陣列名是個常量(在機器眼裡就是個立即數,定址時對變址沒有限制也就說明了C語言對下標越界不檢查)
細節請參見: CS:APP 193-192頁;
南京大學幕課: 計算機系統基礎