我想初始化类型的向量
struct vector
{
size_t capacity;
size_t size;
int *data;
};
我做到了,但我不确定:
struct vector *vector_new();
{
struct vector *vect;
vect = malloc (1*sizeof(vect));
vect->capacity = 1;
vect->size = 0;
int *data;
data = malloc (1*sizeof(int));
}
我想我需要分配两个内存空间,一个用于保存"结构向量",另一个用于数据。我应该使用malloc((还是calloc((?此外,如果内存不足,我怎么会出错呢?感谢
您的代码应该看起来像这样:
#define INITIAL_CAPACITY 10 // initial capacity, choose some appropriate value
// between 1 and N
struct vector *vector_new();
{
struct vector *vect = malloc (sizeof(struct vector));
vect->capacity = INITIAL_CAPACITY;
vect->size = 0;
vect->data = malloc(sizeof(int) * INITIAL_CAPACITY);
return vect;
}
这是一个简单的部分,现在您需要编写允许将一些数据放入向量的函数,然后当大小大于容量时,您可能需要使用realloc
函数。
为了简洁起见,此代码中没有进行错误检查。
对于错误处理,您可以从vector_new
函数返回NULL
。