* 讀作 「指向...的指標」
讀作 「...的陣列」
() 讀作 「返回...的函式」
找到宣告中的識別符號(identifier),它就是你分析的起始點,讀作:「$(identifier)是...」;
看你的識別符號右邊
a) 如果發現「()」,你將知道這是乙個函式宣告,這時你可以說「$(identifier)是返回...的函式」;
b) 如果發現「」,你將知道這是乙個陣列宣告,這時你可以說「$(identifier)是...的陣列」;
c) 繼續向右,直到遇到右邊宣告結束或者遇到「)」,繼續下面。
看你的識別符號左邊
a) 如果碰到的不是我們在0.中定義的符號,則直接說出它;否則按照0.中定義的符號含義說出。繼續向左,直到遇到左邊宣告結束或「(」。
4. 重複2和3的步驟,直到宣告分析完畢。
我們從簡單到複雜,循序漸進。
[example 1] int *p;
1) 找到識別符號:p,讀作:「p是...」;
2) 向右看:發現一「」,然後遇到右邊宣告結尾,讀作:「p是...的陣列」;
3) 向左看:發現一「*」, 讀作:「p是指向...的指標的陣列」;
4) 繼續向左看:沒有發現0.中定義的符號,則分析結束,讀作:「p是指向int型別的指標的陣列」。
[example 2] int *(*func())();
1) 找到識別符號:func,讀作:「func是...」;
2) 向右看:發現一「()」,然後遇到「)」,讀作:「func是返回...的函式」;
3) 向左看:發現一「*」,然後遇到「(」,讀作:「func是返回指向...的指標的函式」;
4) 向右看:發現一「()」,然後右邊宣告結束,讀作:「func是返回指向返回...的函式的指標的函式」;
5) 向左看:發現一「*」,讀作:「func是返回指向返回指向...的指標的函式的指標的函式」;
6) 向左看:沒有發現.中定義的符號,則分析結束,讀作:「func是返回指向返回指向int型別的指標的函式的指標的函式」。
c c 右左法則
原文 右左法則不是c標準裡面的內容,它是從c 標準的宣告規定中歸納出來的方法。c 標準的宣告規則,是用來解決如何建立宣告的,而右左法則是用來解決如何辯識乙個宣告的,兩者可以說是相反的。右左法則原文 the right left rule start reading the declaration f...
右左法則舉例
1,int fp1 int 10 這是乙個函式指標變數,指向乙個形參為int,返回值為乙個陣列指標,該指標指向乙個整型指標陣列。2,int arr 5 這是乙個函式指標陣列,該陣列裡的元素指向形參為空,返回值為乙個函式指標,形參為空,返回值為int 3,float b 這是乙個函式,形參為空,返回值...
指標的右左法則
指標的右左法 右左法則 右左法則的英文原文翻譯 首先從最裡面的圓括號開始閱讀,然後向右看,再往左看。每當遇到圓括號時,就應該調轉閱讀方向。一旦解析完圓括號裡面所有東西,就跳出圓括號。重複整個過程直到整個宣告解析完成。其實左右法則就是以標示符為中心點,自右向左旋轉解讀指標的宣告含義。例如 int a ...