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, используется один из двух вариантов выделения памяти:

  1. Если __cplusplus определен, то используется новый оператор new, который выделяет память под массив объектов типа type, а затем приводит эту память к указателю на первый элемент массива.
  2. Если __cplusplus не определен, то используется функция calloc, которая выделяет память под массив объектов типа type и инициализирует все элементы этого массива нулевыми значениями. Сам код можно представить в виде списка не более 20 элементов:
  3. Объявление макроса NEW.
  4. Проверка наличия определения __cplusplus.
  5. Если __cplusplus определен, то использование нового оператора new для выделения памяти под массив объектов типа type.
  6. Если __cplusplus не определен, то использование функции calloc для выделения памяти под массив объектов типа type.
  7. Возврат выделенной памяти в виде указателя на первый элемент массива.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5