回答
這是一個指向其中函數返回int,並採取作爲參數2字符指針的函數。
的基本規則可以歸結爲幾點: -
有三個簡單的步驟如下:
- 與未知元素開始,以螺旋/順時針方向移動; ecountering以下元素在與對應的英文語句代替它:
[X] or []
- 陣列
X
大小...或數組未定義大小...(type1, type2)
- 函數傳遞
type1
和type2
回... * - 指針指向...繼續以螺旋/順時針方向執行此操作,直到所有標記都被覆蓋。首先解決任何括號內的問題!
- 陣列
參考: 1. Clockwise-rule 2. right-left rule
當你讀到C聲明你必須閱讀他們butrophedonically(古希臘的石頭寫的常見方式)。
pointer to
function that
has (char*, char*) type parameters as input
and int as output
編輯:
LOL,Upvote for reference –
您粘貼的代碼實際上是指向一個功能。該功能的prototype可能是: int cmp (char*, char*);
有三個部分在此函數:返回類型爲整數,函數的名稱是cmp
並且有兩個參數,所有這些都指向一個字符(數組)。具體來說,該函數用於排序,例如,如果第一個參數小於第二個參數,則該函數將返回一個負數,如果相等,則返回零,如果大於則返回一個正數。例如,如果我有以下代碼:
char c1 = 'a';
char c2 = 'b';
int result = cmp(&c1, &c2);
然後結果將是一個負數,例如, -1,因爲'a'小於'b'。在上面的函數調用中,我在每個參數之前添加了&,因爲參數數據類型是指向該字符的指針/引用。 &
是獲取變量地址的操作。
關於您提供的代碼,實際上在功能cmp
的名稱前面還有一個額外的*
。這意味着你想獲得整個函數的引用,而不是任何單個變量或數組。例如,下面是功能qsort的在C原型:
void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))
這個函數的第三個參數其實是非常相似的,你所提供的代碼。這樣做的原因是您可以直接將整個函數傳遞給另一個函數,例如qsort作爲參數。
看看這個link的有關C.
我希望這回答了你的問題指針的細節。
- 1. 這個C代碼是做什麼的?
- 2. 這個C代碼是做什麼的?
- 3. 爲什麼這個C代碼示例使用指針指針?
- 4. 這段C代碼是做什麼的?
- 5. 這行C#代碼是做什麼的?
- 6. 這是什麼C#代碼做(列表)?
- 7. 在這段C++代碼中指針的必要性是什麼?
- 8. 這個clojure代碼是做什麼的?
- 9. 這個rails代碼是做什麼的?
- 10. 這個python代碼是做什麼的?
- 11. 這個javascript代碼是做什麼的?
- 12. 這個xkcd代碼是做什麼的?
- 13. 這個VHDL代碼是做什麼的?
- 14. 這個C++代碼段做了什麼?
- 15. 這個指針做了什麼?
- 16. 對數和指數,這個彙編代碼是做什麼的?
- 17. 什麼是C#代碼做:
- 18. 這段代碼做了什麼? (關於指針)
- 19. 這個C矩陣代碼是做什麼的?
- 20. 這些代碼行是做什麼的?它涉及指針和數組
- 21. C分配了指針?這是什麼?
- 22. 這行代碼是做什麼的?
- 23. 這是什麼代碼做perl的
- 24. jquery - 這行代碼是做什麼的?
- 25. 這些代碼行是做什麼的?
- 26. 這段Javascript代碼是做什麼的?
- 27. 這些代碼是做什麼的?
- 28. 這些代碼行是做什麼的?
- 29. 這段代碼是做什麼的?
- 30. 這行PHP代碼是做什麼的?
一般來說,我覺得這是一個相當不錯的指針解釋:http://shop.oreilly.com/product/0636920028000.do – mko
[C函數指針語法](https:// stackoverflow。 com/questions/14114749/c-function-pointer-syntax) – dandan78