天天看點

左右法則過程簡單分析C語言指針

右左法則: 從最内部的括号開始閱讀,向右看,然後向左看.當碰到一個括号時就掉轉閱讀的方向.括号内的所有内容都分析完畢就跳出括号的範圍.這樣繼續,直到整個聲明都被分析完畢.

int* (* (*fp1)(int) )[10];
           

1.     從變量名開始---fp1

2.     往右看,什麼也沒有,碰到),是以往左看,碰到一個*----一個指針

3.     跳出括号,碰到(int)----一個帶一個int參數的函數.

4.     往左看,發現一個*----(函數)傳回一個指針.

5.     跳出括号,往右看,碰到[10]----一個10元素的數組

6.     往左看,發現一個*----指針.

7.     往左看,發現一個int----int類型.

總結:fp1被聲明成為一個函數的指針,該函數傳回指向指針數組的指針.

int* (* ( * arr[5])() )();
           

1.     從變量名開始---arr

2.     往右看,發現是一個數組----一個五個元素的數組

3.     往左看,發現一個*----指針.

4.     跳出括号,往右看,發現()----一個不帶參數的函數.

5.     往左看,碰到*----(函數)傳回一個指針.

6.     跳出括号,向右發現()----不帶參數的函數.

7.     向左,發現*----(函數)傳回一個指針.

8.     繼續向左,發現int----int類型

總結 arr被聲明成為一個函數的指針數組,該函數傳回指向函數指針的指針