首頁 > 後端開發 > C++ > 如何使用'cout”在 C 中正確列印函數指標?

如何使用'cout”在 C 中正確列印函數指標?

Susan Sarandon
發布: 2024-12-30 02:07:09
原創
446 人瀏覽過

How Can I Correctly Print Function Pointers in C   using `cout`?

使用 cout 列印函數指標

在 C 中,直接使用 cout 列印函數指標可能會出現問題。相反,建議在列印之前將函數指標轉換為 void*。下面的程式碼片段示範了這一點:

#include <iostream>
using namespace std;

int foo() {return 0;}

int main()
{
    int (*pf)();
    pf = foo;
    cout << "cout << pf is " << pf << endl;
    cout << "cout << (void *)pf is " << (void *)pf << endl;
    printf("printf(\"%p\", pf) is %p\n", pf);
    return 0;
}
登入後複製

輸出:

cout << pf is 1  
cout << (void *)pf is 0x100000b0c  
printf("%p", pf) is 0x100000b0c
登入後複製

如上所示,cout 將函數指標隱式轉換為 bool,從而產生輸出 1。函數的實際位址,必須轉換為 void*。

void* 類型的函數指標可以直接使用列印庫特。這是因為 void* 是通用指標類型,可以保存任何類型的位址,包括函數指標。

觀察成員函數指標

使用以下方式列印成員函數指標void* 由於其更複雜的結構而不起作用。不過,根據 C 標準,函數指標的右邊值可以轉換為 bool。

以上是如何使用'cout”在 C 中正確列印函數指標?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板