Значение типа *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));
Объяснение кода листинга программы
В данном коде выполняется следующее:
initial_capacity- это переменная типаint, которая содержит начальный размер буфера, выделяемого под вектор.vector- это переменная типаvoid*(указатель на неопределенный тип), которая указывает на начало памяти, выделенной под вектор.data- это переменная типаint*, которая является указателем на начало данных внутри буфера, выделенного под вектор.malloc- это функция, которая выделяет память под буфер. В данном случае, функция вызывается с аргументомinitial_capacity * sizeof(int), который определяет размер буфера в байтах.- Результат работы функции
mallocприсваивается переменнойvector->data. Таким образом,vector->dataстановится указателем на начало выделенного буфера.