簡體   English   中英

函數名稱和函數指針

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM