對于C語言的指針,其實不難理解。
萬變不離其宗,最簡單的理解指針就是“地址”,無論什么類型的指針(整數,數組,字符串,函數等),指針的值都是一個整形數值,是所指向的一個此類型實際變量在內存中的首地址。
因此,不管如何花哨的名字,指針就是一個內存地址而已,如,字符指針是一個字符串的內存首地址,函數指針無非是一個函數在內存的首地址,通過這個地址,可以對對應變量進行操作。
所謂指針數組,首先是個數組,只是用來保存指針的數組,就是一個保存若干個指針地址的數組而已。
從實際情況看,指針的價值有幾點,一是提供了一種”按位置和順序”操作變量的方式,二是在函數調用時,提供了被調用函數形參和調用函數實參的統一,增加了程序靈活性,簡化了變量的使用,可以說,C語言的指針,是其是最具生命力和最有價值的特性之一,相比其他語言,在開發中大型應用時提供非常高的效率,也是其他開發語言無法具備的。
指針的靈活性和簡化的特點,弊端是增加了程序執行的風險,。
在C語言中,指針是最容易造成內存越界而程序崩潰的因素,因此需要特別小心。
因此,在實際開發中,除非特別必要,對指針的使用要慎重,以免增加運行的風險和維護的難度。實際場景中,指針最適合用在”首地址+偏移量”類操作能帶來更便捷或性能提升很多的情況,最典型的如字符串處理操作,否則的話,如可以不用指針,則盡量不要用。