搞懂指針必須區分四個概念:
int*、int**、int(*)[3])* 剩下的(如 int、int*、int[3])| 聲明 | 指針類型 | 指向類型 | 說明 |
|---|---|---|---|
int *p; | int* | int | 指向整數 |
char *p; | char* | char | 指向字符 |
int **p; | int** | int* | 指向整數指針 |
int (*p)[3]; | int(*)[3] | int[3] | 指向 3 元素整數數組 |
int *(*p)[4]; | int*(*)[4] | int*[4] | 指向 4 元素整數指針數組 |
*p 取多少字節、指針算術 p+1 跳多少字節sizeof(p)、作為函數參數類型匹配遇到指針變量,先問自己:
1. 它的類型是什麼?
2. 它指向的類型是什麼?
3. 它當前指向哪裡(地址值)?
sizeof(指針類型) 給出指針自身大小。表達式若佔用可寫內存(有地址)則為左值,可取地址 &;寄存器變量、常量表達式非左值。