2012年8月13日 星期一

C 指標整理

A.     比較三種宣告之間的差異
 int p1;
p1 為一個整數變數,變數內容為一個整數
 int *p2;
p2 為一個指標變數,變數內容為一個指標,指向一個儲存整數的空間
 int **p3;
p3 為一個指標變數,變數內容為一個指標,指向另一個儲存指標的空間。另一個指標指向儲存整數的空間。
 int *p4( );
p4 為一個函數指標,指向一個函數


B.     比較六種宣告之間的差異
char p1;
p1 為一個字元型態的變數,變數內容為一個字元
char *p2;
p2 為一個指標變數,指標指向一個儲存字元的空間
char **p3;
p3 為一個指標變數,變數內容為一個指標,指向另一個儲存指標的空間。另一個指標指向儲存字元的空間
(char *)p4[20];
p4 是一個陣列儲存 20 個字元型態的指標
char (*p5)[20];
p5 是一個指標變數,指向一個 20 個字元大小的空間
char (*p6)[20][40];
p6 是一個指標變數,指向一個 20*40 字元大小的空間


C.     比較三種宣告之間的差異
char const *p1;
const char *p2;
char * const p3; 

1. char (Type) const (Qualifier) 為等價關係,順序不影響宣告代表的意義,
所以 char const const char 的意義是相同的。
2. 閱讀的的技巧:先將 Type 部分省略
const *p1
p1為一個指標變數,指標變數的內容 (指標) 所指向的值不可修改
const *p2
p2 為一個指標變數,指標變數的內容 (指標) 所指向的值不可修改
* const p3
p3 為一個指標變數,指標變數的內容 (指標) 不可修改

沒有留言:

張貼留言