结构体:
struct list{
int size;
int*data;
int maxsize;
};
创建函数:
list*create(){
list*l=(list*)malloc(sizeof(list));
int body[5];
l->data=body;
l->size=0;
l->maxsize=5;
return l;
}
添加函数:
list* append(int a,list*l){
if(l->size>=l->maxsize){
l->maxsize+=5;
int newbody[l->maxsize];
newbody[l->size]=a;
for(int i=0;i<l->size;i++)
newbody[i]=*(l->data+i);
l->data=newbody;
}
else{
l->data[l->size]=a;
}
l->size++;
return l;
}
输出函数:
void output(list*l){
list* l2=l;
printf("(%d)\n",*l2->data);
printf("(%d)\n",*l2->data);
printf("(%d)\n",*l2->data);
}
main 函数:
int main(int argc, char** argv) {
list*l=create();
for(int i=0;i<4;i++){
l=append(i,l);
}
output(l);
return 0;
}
输出结果:
(0)
(0)
(-1809819328)
设想结果:
(0)
(0)
(0)
请问是怎么回事。