C 如何在索引时强制转换void?
如何施展:C 如何在索引时强制转换void?,c,pointers,vector,casting,C,Pointers,Vector,Casting,如何施展: #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)
#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;
}
向量可以这样实现吗?索引比强制转换具有更高的优先级,因此您必须使用
((int*)vec.data)[i] = i;
FWIW,您尝试执行强制转换的循环未执行,因为此时vec.size为0。使用
void*
时,请记住这一点,您是否意识到vac.size为0?
((int*)vec.data)[i] = i;