使用指針是為了實現對計算機系統的全面控制。
我們從計算機的結構簡單說說吧。
當前的主流計算機均采用馮諾伊曼體系結構。后面均假設使用此體系結構的計算機。
(部分處理器自稱為哈佛結構,但也僅限于CPU核心及Cache內部,就整個系統而言仍是馮諾伊曼結構)
在此結構下,幾乎所有的計算機系統資源都可被尋址訪問(除了CPU內部寄存器)。
常見的資源,如:
高速內存(片內SRAM)
普通內存(片外DRAM,如DDR4)
高速片內設備寄存器:如中斷控制器、DMA控制器
低速外設寄存器:如串行控制器
要實現對這些資源的控制,必須能精確控制讀寫操作的地址、次數、位寬。
再比如,中斷處理程序,需要精確了解代碼所在地址,這在C語言中可通過函數指針獲得。
總體說來,通過指針,能達到對目標代碼、數據空間的精確控制,基本能完整的控制計算機的各種資源(CPU內部資源往往需特殊匯編指令控制)。
個人看法:C語言通過放棄對寄存器的精確控制,實現了編程和學習的簡化;又通過指針高效的抽象了計算機資源的訪問方式,達成了細節和復雜度的優秀平衡,這也是C語言經久不衰的一大法寶。