C語言指針分析
int p;
p是一個普通的整型變量。
int *p;
1、p與*結合,說明p是一個指針。
2、*p與int結合,說明指針所指向的內容的類型是整型的。
所以p是一個返回整型數據的指針。
int p[5];
1、p與[]結合,說明p是一個數組。
2、p[5]與int結合,說明數組裏的元素是整型的。
所以p是一個由整型數據組成的數組。
int *p[5];
1、p與[]結合(因為其優先級比*高),說明p是一個數組。
2、p[5]與*結合,說明數組裏的元素是指針類型。
3、*p[5]與int結合, 說明指針所指向的內容的類型是整型的。
所以p是一個由返回整型數據的指針所組成的數組。
int (*p)[5];
1、p與*結合,說明p是一個指針。
2、*p與[]結合,說明指針所指向的內容是一個數組。
3、(*p)[5]與int結合,說明數組裏的元素是整型的。
所以p是一個指向由整型數據組成的數組的指針。
int **p;
1、p與*結合,說明p是一個指針。
2、*p與*結合,說明指針所指向的元素是指針。
3、**p與int結合,說明指針所指向的內容的類型是整型的。
所以p是一個指向整型指針的指針。
int p(int);
1、p與()結合,說明p是一個函數。
2、p()與()裏的int結合,說明函數有一個int型的參數。
3、p(int)與外面的int結合,說明函數的返回類型是整型。
所以p是一個有一個整型參數且返回類型為整型的函數。
int (*p)(int);
1、p與指針結合,說明p是一個指針。
2、*p與()結合,說明指針指向的是一個函數。
3、(*p)()與()裏的int結合,說明函數有一個int型的參數。
4、(*p)(int)與最外層的int結合,說明函數的返回類型是整型。
所以p是一個指向有一個整型參數且返回類型為整型的函數的指針。
int *(*p(int))[5];
1、從p處開始,先與()結合,說明p是一個函數.
2、p()與()裏的int結合,說明函數有一個int型的參數。
3、p(int)與外面的*結合,說明函數返回的是一個指針。
4、(*p(int))與[]結合,說明返回的指針指向的是一個數組。
5、(*p(int))[5]與*結合,說明數組裏的元素是指針。
6、*(*p(int))[5]與int結合,說明指針所指向的內容的類型是整型的。
所以p是一個參數為一個整數據且返回一個指向由整型指針變量組成的數組的指針變量的函數。
C語言指針分析