C語言——複雜型別說明

2020-08-13 11:40:17

  要理解複雜型別其實不難,一個型別裏面也會出現一些運算子,有優先順序,在搞清楚優先順序之後,複雜型別判斷的難題就迎刃而解了。

int p;

//這是一個普通的整形變數

int *p;

//首先從P處開始,先與*結合,說明P是一個指針,再與int型別結合,說明指針所指向的內容型別爲int型

int p[3];

//P與[]先結合,說明P是一個數組,再與int相結合,表示陣列中的元素是int型

int *p[3];

//P與[]先結合,說明P是一個數組,再與*結合,說明陣列中的元素是指針,再與int結合,說明元素中這些指針指向的數據型別爲int型

int (*p)[3];

//()改變了優先順序,P先與*結合,說明P是一個指針,再與[]結合,說明該指針指向一個數組,再與int結合,說明改該陣列中的元素爲int型

int **p;

//P與先結合,說明P是一個指針,再與結合,說明這個指針指向一個指針,再與int結合,說明這個指針指向的數據型別爲int型

int p(int);

//P先與()結合,說明P是一個函數,再與()中的int結合,說明這個函數有一個形參的型別爲int型,再與int結合,說明該函數的返回值爲int型

int (*p)(int);

//P先與*結合,說明P是一個指針,再與()結合,說明該指針指向的是一個函數,再與()中的int結合,說明P指針指向的這個函數的參數爲int型,再與int結合,說明這個函數的返回值爲int型別

int *(*p(int))[3];

//P與()先結合,說明P是一個函數,再與()中的int結合,說明函數的形式參數爲int型,再與結合,說明函數返回的是一個指針,再與[]結合,說明這個指針指向的是一個數組,再與結合,說明這個陣列中的元素是指針,再與int結合,說明這個陣列中的指針指向的是int型。