Cannot convert 'void*' to 'int*' - C (СИ)
Формулировка задачи:
Доброго времени суток. На этот код компилятор выдаёт ошибку "cannot convert 'void*' to 'int*'". Что не так?
#include <stdio.h.> #include <alloc.h> void main () { int n=8, *p; p=malloc(n*sizeof(float*)); }
Решение задачи: «Cannot convert 'void*' to 'int*'»
textual
Листинг программы
#ifdef __cplusplus # define NEW(type, count) ((type *)calloc(count, sizeof(type))) #else # define NEW(type, count) (calloc(count, sizeof(type))) #endif
Объяснение кода листинга программы
В данном коде определен макрос NEW, который предназначен для выделения памяти под массив объектов типа type. При этом, в зависимости от того, определен ли заголовочный файл __cplusplus, используется один из двух вариантов выделения памяти:
- Если __cplusplus определен, то используется новый оператор new, который выделяет память под массив объектов типа type, а затем приводит эту память к указателю на первый элемент массива.
- Если __cplusplus не определен, то используется функция calloc, которая выделяет память под массив объектов типа type и инициализирует все элементы этого массива нулевыми значениями. Сам код можно представить в виде списка не более 20 элементов:
- Объявление макроса NEW.
- Проверка наличия определения __cplusplus.
- Если __cplusplus определен, то использование нового оператора new для выделения памяти под массив объектов типа type.
- Если __cplusplus не определен, то использование функции calloc для выделения памяти под массив объектов типа type.
- Возврат выделенной памяти в виде указателя на первый элемент массива.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д