指針實際是一個整數數值,這個數字代表操作系統分配的內存的一個位置(通常成為“地址”)。
舉個排隊的例子,比如一個門口有很多人依次排隊,我們可以從排隊的第一個人開始,依次給每個人一個唯一的號碼,我們通過號碼,就能快速找到對應的排隊的人。
相似的,當我們通過指針得到內存地址后,再通過指針類型(char、int、long等),可以提取從這個內存位置開始的指定bit的二進制數據,這個數據可以被程序執行來使用。
使用指針的好處是“快速”和“靈活”,早期電腦計算能力比較弱,指針操作相對速度要更快,但在今天的電腦運行速度情況下,快速的優勢已經不再明顯。
但從靈活性方面,指針是c語言最有特色的功能之一,無論從字符串的處理,函數的調用和的返回等都非常靈活,也簡化了程序開發。
不過靈活也帶來了管理的難度,指針操作如果不注意的話,非常容易造成內存溢出等錯誤導致程序崩潰(比如,對一個包含5個字符的字符串,如果程序試圖從指針地址加5獲取第六個字符),也因為如此,c語言的子孫或后繼們,除了c++和go支持指針,c#采用了非安全代碼的折中方案外,如java,pyrhon等,大多都不再提供指針的功能,但也限制語言的能力。