使用cout 和printf 列印函數指標
在C 中,可以使用cout 或printf 列印函數指針,但根據不同的情況具有不同的行為使用的格式說明符。
cout運算子
預設情況下,cout 將函數指標視為布林值,並為非空指標列印 1,為空指標列印 0。要列印實際位址,必須將其明確轉換為 void*:
cout << (void *)pf;
printf 函數
當將 printf 與 %p當格式說明符一起使用時,函數指針被視為指針,它們的位址被印在十六進位:
printf("%p", pf);
函數指標作為布林值
函數指標在C 中確實被視為布林值。這是由於布林轉換規則允許將指標強制轉換為 bool,其中非空指標的計算結果為 true,空指標的計算結果為 false。如果不考慮此行為,可能會出現意外情況。
成員函數指標
列印成員函數指標更為複雜,因為它們不是簡單的指標。然而,可以使用一個技巧來列印成員函數的位址:
cout << (void *)(*(int **)&pf);
這利用了成員函數的位址儲存在函數指標的第二個元素中的事實,並進行強制轉換使其作廢* 。
以上是如何使用'cout”和'printf”在 C 中列印函數指標?的詳細內容。更多資訊請關注PHP中文網其他相關文章!