Как это преобразовать:
#include <stdio.h>
#include <stdlib.h>
typedef struct dynamic_array_struct {
void *data;
size_t capacity;
size_t size;
} vector;
int vector_init(vector *v, size_t cap){
v->data = malloc(cap);
if(!v->data) return -1;
v->size=0;
v->capacity=cap;
return 0;
}
int main(){
vector vec;
vector_init(&vec, sizeof(int)*4);
for(size_t i=0; i!=vec.size; i++)
(int*)(vec.data)[i] = i;
}
Я знаю, что void нельзя использовать в arithmeti c, поэтому я пытаюсь преобразовать его в int, но я не знаю предшествующего значения 1) литье, 2) индексация. Как это сделать в l oop без необходимости брать дополнительный указатель (например, int *p=(int*)vec.data
) и использовать его вместо этого? Как сделать все сразу в l oop?
РЕДАКТИРОВАТЬ: Итак, есть изменения:
int main(){
vector vec;
vector_init(&vec, sizeof(int)*4);
for(size_t i=0;i<vec.capacity/sizeof(int);i++){
vec.size++;
((int*)vec.data)[i] = i;
}
printf("%i\n",((int*)vec.data)[4]);
}
Можно ли реализовать вектор таким образом?