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);
廣告