这项计划是为了建立一个动态存储载体。 我敢肯定,我在正确使用malloc。 我真正的问题是一些语法的指针,特别是结构内的指针。
我试图访问一个结构里面一个int指针的地址,这样我就可以把它分配给另一个指针
我给出的结构是:
typedef struct{
int *items;
int capacity;
int size;
}VectorT;
我试图去上班的功能是:
int getVector(VectorT *v, int index){
int *p;
p = v->items;//(2)
p -= v->size;
p += index;
return *p;
}
这应该采取项目的地址指针减去列表中的项目的数量和所需项目的索引添加到p的地址。 然后,我回到什么是p的地址。
我有一个很强烈的感觉,线(2)是不是我需要的语法。
根据我到目前为止已经试过我的程序要么崩溃时getVector被称为或者输出(我最好的猜测)的一些存储位置。
下面是增加了向量的代码:
void addVector(VectorT *v, int i){
if(v->size >= v->capacity){
//allocate twice as much as old vector and set old pointer to new address
v = (VectorT *) malloc(2 * v->capacity * sizeof(VectorT));
if(v == NULL){
fprintf(stderr, "Memory allocation failed!\n");//error catch
}
else{
v->capacity *= 2;//double the reported capacity variable
v->size++;//add one to the reported size variable
v->items =(int *) i;//add the item to the vector (A)<-----
}
}
else{
v->size++;//add one to the reported size variable
v->items =(int *) i;//add the item to the vector (B)<-----
}
}
我不觉得我的问题是在这里,但如果是我在行A&B的一些怀疑...
任何有识之士将不胜感激,谢谢!