C 和 C++ 中的“void *”有什麼不同?


在本節中,我們將瞭解 C 中的 void 指標與 C++ 中的 void 指標之間的區別。它們都是 void 指標,但在 C 中,void 指標可以分配給任何指標型別,但在 C++ 中,我們不能這樣做。在 C++ 中,我們必須明確型別轉換才能進行賦值。

在以下示例中,當我們在 C 中編寫一些程式碼時,這些行可以執行。

void *p;
int *int_ptr = p;

這在 C 中執行良好。現在,如果我們使用 malloc() 分配一些記憶體空間,我們可以使用顯式型別轉換,但如果不執行此操作,也沒有關係。malloc() 函式返回 void 指標。

int *int_ptr = malloc(sizeof(int) * 10);

這裡,返回的 void 指標隱式轉換為整數型別指標。

現在,如果我們想在 C 和 C++ 中運行同一個程式,我們應該顯式型別轉換指標。

void *p;
int *int_ptr = (int *) p;
int *arr_ptr = (int *) malloc(sizeof(int) * 10);

更新於: 2019 年 7 月 30 日

494 人檢視

開啟你的 職業生涯

完成課程即可獲得認證

開始吧
廣告