予有這種類型的定義指針的函數陣列用C
int (*af[10])(int , *a[10][10])(int,int)
的,我不得不「翻譯」它就像「這是函數指針的10陣列大小」等等等等我認爲這裏有個錯誤,導致*a[10][10]
沒有定義類型。它是否正確?或者這行可以正確翻譯?
在此先感謝
最後我發現,正確的定義應該是這樣的
int (*af[10])(int ,int (*a[10][10])(int,int))
這是正確的,是有道理的。
予有這種類型的定義指針的函數陣列用C
int (*af[10])(int , *a[10][10])(int,int)
的,我不得不「翻譯」它就像「這是函數指針的10陣列大小」等等等等我認爲這裏有個錯誤,導致*a[10][10]
沒有定義類型。它是否正確?或者這行可以正確翻譯?
在此先感謝
最後我發現,正確的定義應該是這樣的
int (*af[10])(int ,int (*a[10][10])(int,int))
這是正確的,是有道理的。
這不是有效的C聲明。首先,缺少a
的類型。但更糟的是,它好像(*af[10])(int , *a[10][10])
正在返回一個函數(這是不可能的)。
也許你的意思是:
int (*(*af[10])(int , int *a[10][10]))(int,int)
這將使af
10個指針數組功能接收int
和10個陣列,10個指針數組int
,並返回一個函數指針接收兩個int
小號並返回int
。
編輯:
貌似正確的路線是:
int (*af[10])(int ,int (*a[10][10])(int,int))
這使得af
10個指針的數組起作用接收2個參數和返回int
。第一個參數是int
,第二個參數是多維數組(10x10)或功能指針,接收函數爲2 int
s並返回int
。
未來,您可能需要檢查cdecl.org以確認您的猜測。
我認爲af
實際上是一個數組:
af[10]
數組包含指針:
*af[10]
這些都是函數指針:
int (*af[10])(...)
和參數列表有語法錯誤,可能是int
之後的逗號有錯誤:
int (*af[10])(int *a[10][10])
而其餘的行是垃圾。
這是一個語法錯誤,因爲?缺少定義類型到第二個數組還是? – yakamuki
看起來像一個指向返回函數指針的函數的指針。請閱讀它,如「如果我採取af,給它一個索引從0到9,解引用它,然後用兩個參數調用結果,其中一個是int,另一個可能拼錯,然後用兩個int參數調用結果,那麼我得到一個int「。 – gnasher729
@yakamuki「a」的類型不完整。 –