Чем отличается void* в C и C++?

Опубликовано: 15 Сентября, 2022

C позволяет присвоить указатель void* любому типу указателя без приведения, тогда как в C++ этого не происходит. Мы должны явно привести к типу указатель void* в C++.

Например, следующее допустимо в C, но не в C++:

void* ptr;
int *i = ptr; // Implicit conversion from void* to int*

Сходным образом,

int *j = malloc(sizeof(int) * 5);  // Implicit conversion from void* to int* 

Чтобы приведенный выше код также скомпилировался на C++, мы должны использовать явное приведение типов, как показано ниже:

void* ptr;
int *i = (int *) ptr;
int *j = (int *) malloc(sizeof(int) * 5);

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсуждаемой выше.

C++ C