-4
A
回答
7
您可以使用cdecl助陣:
int *arr[3]
賦予 「聲明改編爲指針數組3爲int」。int (*arr)[3]
給出 「聲明ARR作爲指針整型陣列3」int*(arr[3])
給出 「聲明ARR作爲指針的陣列3爲int」。
此外,當然這些不是「真正」的聲明;沒有終止分號,並且在同一範圍內不能有三個名爲arr
的變量。
3
它’通常知道您使用的語言而不是依靠工具來破譯源代碼是一個好主意,所以我不建議使用C聲明分析器。
一個簡單的方法來記住的優先級是要記住的main
簽名,即
auto main(int argc, char* argv[])
-> int
…你知道argv
是一個指針數組(或者技術上指向這樣一個數組的第一個元素的指針:聲明衰減到char** argv
)。
這意味着,給定argv
可以索引它來得到一個指針,argv[i]
,然後解引用,結果得到一個char
,使相當於括號內聲明
char* (argv[])
聲明
char (*b)[3]
表示通過取消引用b
即*b
,你得到一個可以索引的數組,(*b)[]
,所以b
是一個指向數組的指針。
它’ s不是指向此類數組的第一項的指針。它是’的一個指向的陣列本身。因此,將1加到b
會給你一個指向相同大小的後續數組的指針。
0
後綴運營商如[]
和函數調用()
具有比一元*
更高的優先級,所以像*a[N]
一個聲明將被解析爲*(a[N])
,或「指針的N元件陣列」。要聲明「指向N元素數組的指針」,您需要明確地將一元*
與數組名稱或(*a)[N]
分組。
這是一個方便的圖表。
T a[N] -- N-element array of T
T *a[N] -- N-element array of pointer to T
T (*a)[N] -- pointer to N-element array of T
T f() -- function returning T
T *f() -- function returning pointer to T
T (*f)() -- pointer to function returning T
您可以結合到上述情況相當複雜聲明:
T (*a[N])() -- N-element array of pointers to functions returning T
T (*f())[N] -- Function returning pointer to N-element array of T
T (*(*f())[N])[M] -- Function returning pointer to N-element array of pointer
to M-element array of T
當讀取一個毛茸茸的聲明,先從最左邊的標識和工作的方式了,記住上面的規則:
f -- f
f() -- is a function returning ("()" has higher precedence than "*")
*f() -- a pointer to
(*f())[N] -- an N-element array of
*(*f())[N] -- pointers to
(*(*f())[N])[M] -- M-element arrays of
T (*(*f())[N])[M] -- T
相關問題
- 1. 數組的類型聲明
- 2. Java數組類型聲明
- 3. 如何聲明不同數據類型的數組
- 4. 具有不同類型的2維數組的聲明
- 5. 聲明數組中的類型?
- 6. 如何聲明新類型的數組?
- 7. Xtext,聲明數組和結構類型
- 8. VBA如何聲明具有不同數據類型的元素的數組
- 9. 我該如何聲明一個具有不同類型數據的數組?
- 10. 聲明的類型
- 11. 聲明數據類型
- 12. 新類型聲明函數?
- 13. 聲明相同類型的Java
- 14. JAXB解組與聲明的類型不填充數據
- 15. 不同類型的數組
- 16. 不同類型的數組
- 17. 相同的聲明,我想兩種不同類型的
- 18. 不同的函數聲明
- 19. 聲明具有相同名稱但不同類型的屬性
- 20. 不同的智能感知不同的數組聲明
- 21. 類型不匹配錯誤,二維數組聲明
- 22. php:聲明函數的參數類型
- 23. Haskell類型聲明
- 24. 無類型聲明
- 25. 聲明新類型
- 26. Data.Map類型聲明
- 27. Java類型聲明
- 28. 聲明typedef類型
- 29. Storage.prototype.setObject聲明類型
- 30. 空類型聲明
http://c-faq.com/decl/spiral.anderson.html – chris 2014-09-02 13:19:06
http://cdecl.org/ – P0W 2014-09-02 13:20:20
第一個和第三個是一樣的。 – 2014-09-02 13:21:02