一、const指針
1、const int* p和int const* p:兩者意義是相同的。指向的内容是隻讀資料,不可以q改變;但是指向的位址可以改變。
2、int* const p:必須先對指針初始化,而且指向的位址是隻讀的,不可以再被改變;但是指向的内容可以改變。
3、const int* const p:既不可以改變指針指向的位址,也不可以改變指針指向的内容。
二、指針數組:元素類型全是指針
類型名稱*數組名[數組長度]
例如:
char* pc[10]:字元指針數組,常用來可以表示一個字元串
三、數組指針:指針指向數組名
類型名稱(*指針名)[數組長度]
int a[5] = {1,2,3,4,5};
int (*temp)[5] = &a; //temp指向的是整個數組
注意:
1、定義指針時()不能丢掉,因為[]優先級比*高,若丢掉,就會變成指針數組。例如:int *temp[4]//數組4個元素都是int*。
2、數組長度、元素類型必須與指針定義時給出的長度、類型相同。
四、函數指針
資料類型(*指針變量名稱)(形式參數清單)
本質:函數放在代碼區,函數指針指向代碼區,通過函數指針可以通路代碼區中的内容。括号()不可以省。。。
例如:float (*p)(float a,float y):float類型指針函數
float* p(float x,float y):函數p傳回值為float指針類型
五、總結數組與指針的差別:
1、指針的本質是一個與位址相關的複合類型,它的值是資料存放的位置(位址);數組的本質則是一系列的變量。
2、數組名對應着(而不是指向)一塊記憶體,其位址與容量在生命期内保持不變,隻有數組的内容可以改變。指針可以随時指向任意類型的記憶體塊,它的特征是"可變",是以我們常用指針來操作動态記憶體。
3、當數組作為函數的參數進行傳遞時,該數組自動退化為同類型的指針。
因為第三條,當把數組名作為函數的形參進行傳遞時,該效果等同于傳遞一個同類型的指針。直接在程式當中調用 函數名(數組名)即可。
程式猿神奇的手,每時每刻,這雙手都在改變着世界的互動方式!
本文轉自當天真遇到現實部落格園部落格,原文連結:http://www.cnblogs.com/XYQ-208910/p/4887949.html,如需轉載請自行聯系原作者