[英]Function Name and Pointer to function
函數名稱是否代表指向該函數的指針(例如數組)?
如果我將函數聲明為void fu (void);
以及指向該函數的指針數組,例如void(*ptr_fn[8])(void);
所以我可以做ptr_fn[0] = fu;
不,數組的名稱也不代表指針。
名稱代表函數,但是在表達式中使用函數名稱時會有隱式轉換。
請參見4.3函數到指針的轉換:
函數類型T的左值可以轉換為“指向T的指針”的前值。結果是指向函數的指針。
是。 它也等效於:
ptr_fn[0] = &fu ;
即&
是可選的。
同樣地,通過指針調用函數時
ptr_fn[0]() ;
等效於:
(*ptr_fn[0])() ;
使用&
和*
運算符可能會強調您正在處理一個函數指針,因此有助於人類進行維護和理解,但對編譯器的代碼生成沒有影響。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.