Значение типа *void нельзя присвоить сущности int * - C (СИ)

Узнай цену своей работы

Формулировка задачи:

IntVector *int_vector_new(size_t initial_capacity)
{
    IntVector *vector = malloc(sizeof(IntVector));
    if (vector == NULL) {
        return NULL;
    }
    vector->data = malloc(initial_capacity * sizeof(int));
    if (vector->data == NULL) {
        free(vector);
        return NULL;
    }
    vector->size = 0;
    vector->capacity = initial_capacity;
    return vector;
}
Мне нужно выделить память под вектор, ошибка в присваивании адреса Помогите решить проблему.
Вопрос отпал

Решение задачи: «Значение типа *void нельзя присвоить сущности int *»

textual
Листинг программы
vector->data = (int*) malloc(initial_capacity * sizeof(int));

Объяснение кода листинга программы

В данном коде выполняется следующее:

  1. initial_capacity - это переменная типа int, которая содержит начальный размер буфера, выделяемого под вектор.
  2. vector - это переменная типа void* (указатель на неопределенный тип), которая указывает на начало памяти, выделенной под вектор.
  3. data - это переменная типа int*, которая является указателем на начало данных внутри буфера, выделенного под вектор.
  4. malloc - это функция, которая выделяет память под буфер. В данном случае, функция вызывается с аргументом initial_capacity * sizeof(int), который определяет размер буфера в байтах.
  5. Результат работы функции malloc присваивается переменной vector->data. Таким образом, vector->data становится указателем на начало выделенного буфера.

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

15   голосов , оценка 3.867 из 5
Похожие ответы