Рубрики

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

C позволяет присваивать указатель void * любому типу указателя без приведения, тогда как C ++ этого не делает; эта идиома часто встречается в коде C с использованием выделения памяти malloc. Например, следующее допустимо в C, но не в C ++:

void* ptr;

int *i = ptr; / * Неявное преобразование из void * в int * * /

или аналогично:

int *j = malloc(sizeof(int) * 5); / * Неявное преобразование из void * в int * * /

Для того чтобы код компилировался как в C, так и в C ++, необходимо использовать явное приведение:

void* ptr;

int *i = (int *) ptr;

int *j = (int *) malloc(sizeof(int) * 5);

Источник:
http://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B

Рекомендуемые посты:

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

0.00 (0%) 0 votes