在C中,void
指針被隱式地轉換爲另一種類型。C與C++中void *的轉換
請參見下面的程序:
int main()
{
void *p;
int* ptr,i=5;
p=&i;
ptr=p; <---------------------------
return 0;
}
當C環境下運行的程序compiles successfully。
但是,如果在同一個程序爲C下運行++環境下,我得到了下面error:
prog.cpp: In function ‘int main()’:
prog.cpp:8: error: invalid conversion from ‘void*’ to ‘int*’
這意味着,在C++中,我們需要明確的典型案例一void
指針。
那麼,爲什麼new
運算符的返回類型是void *?如何將其轉換爲所需的類型?
我認爲你可以指示C編譯器對於隱式強制轉換更迂腐。 – maba 2012-08-08 13:25:37