Чем отличается 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);
Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсуждаемой выше.