typedef
1、起名字
2、范圍規則
#define
1、簡單的文本替換
2、使用 #ifdef ,#ifndef等來進行邏輯判斷,還可以使用#undef來取消定義
從變量名看起,先往右,再往左,碰到一個圓括號就調轉閱讀的方向
type (*)(....)函數指針
type (*)[]數組指針
int (*func)(int *p);
首 先找到變量名func,外面有一對圓括號,而且左邊是一個*號,這說明func是一個指針;然后跳出這個圓括號,先看右邊,又遇到圓括號,這說明 (*func)是一個函數,所以func是一個指向這類函數的指針,即函數指針,這類函數具有int*類型的形參,返回值類型是int。
int (*func[5])(int *);
func 右邊是一個[]運算符,說明func是具有5個元素的數組;func的左邊有一個*,說明func的元素是指針(注意這里的*不是修飾func,而是修飾 func[5]的,原因是[]運算符優先級比*高,func先跟[]結合)。跳出這個括號,看右邊,又遇到圓括號,說明func數組的元素是函數類型的指 針,它指向的函數具有int*類型的形參,返回值類型為int。