網頁

2016年11月14日 星期一

Pointer

指標和指位運算子: 指標是變數存放記憶體位址。指位運算子(*)在宣告時表示變數為指標變數,在一般statement中代表傳回變數指標的值

應用: sizeof(ptr) 所得到的是該指標本身的大小,而 sizeof (*ptr) 所得到的是,指標指向的記憶體區塊之第一個 item 之型態大小。

char array[1024];

sizeof(array) 為 1024 個 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)()

應用: 可指向具有相同型態的函式,也就是具有相同傳回值型態和參數列的函式。


沒有留言:

張貼留言