在沒有呼叫的情況下列印函數指標
當嘗試列印不帶括號的函數時(即,作為f 而不是f ()),人們可能會遇到意想不到的結果,例如總是列印值1。這種看似矛盾的行為源自於所涉及的底層機制。
在提供的程式碼中,語句 cout
為了列印函數指標本身,必須將其明確轉換為 void* 指標。這可以透過使用諸如 cout
C 11 和函數指標重載
隨著C 11 的出現,出現了更方便的列印函數指標的方法。超載
<code class="cpp">template <class RType, class ... ArgTypes> std::ostream & operator<<(std::ostream & s, RType(*func)(ArgTypes...)) { return s << "(func_ptr=" << (void*)func << ")(num_args=" << sizeof...(ArgTypes) << ")"; }</code>
此重載將以(func_ptr=
) (num_args=)。以上是如何在 C 中列印函數指標而不呼叫它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!