指標和指位運算子: 指標是變數存放記憶體位址。指位運算子(*)在宣告時表示變數為指標變數,在一般statement中代表傳回變數指標的值
應用: sizeof(ptr) 所得到的是該指標本身的大小,而 sizeof (*ptr) 所得到的是,指標指向的記憶體區塊之第一個 item 之型態大小。
char array[1024];
sizeof(array) 為 1024 個 char 的大小,
sizeof(*array) 為一個 char 的大小
sizeof(*array) 為一個 char 的大小
( *array 會被 compiler 視為 *(array+0),等同於 array[0],代表 array 中的第一個 item 的 size)
指標陣列: 構成陣列的元素都是指標
char *p[3];
p[0] = "abc";
p[1] = "12345";
p[2] = "xy";
應用: 陣列可以儲存"字串"。
陣列指標:宣告指標指向具有4個element一維陣列的記憶體空間,也就是二維陣列
char (*str)[4] (char [][4])
應用: 只要知道"字元"的存放位置,就可以找出它的element。
指標函式 (function return a pointer): 將函式宣告成指標,此函式回傳值是位址
int *func()
應用: 傳回字串或陣列(多個變數)而不再只傳回一個變數。
函式指標 (function pointer): 宣告指標指向函式的記憶體位址,此函式回傳值是一個整數型態
int (*ptr)()
應用: 可指向具有相同型態的函式,也就是具有相同傳回值型態和參數列的函式。
沒有留言:
張貼留言