我正在学习C并试图构建一个动态数组。我发现了一个很棒的教程,但我并没有完全掌握它。我现在的代码是C动态数组元素访问
typedef struct{
int size;
int capacity;
char *data;
}Brry;
void brry_init(Brry *brry){
brry->size = 0;
brry->capacity = 2;
brry->data = (char *)calloc(brry->capacity, sizeof(char));
}
void brry_insert(Brry *brry, char value){
brry->data[brry->size++] = value; //so do check here if I have enough memory, but checking something out
}
int main(void){
Brry brry;
brry_init(&brry);
for (int i = 0; i < 3; i++) {
brry_insert(&brry, 'a');
}
printf("%c\n", brry.data[2]);
return 0;
}
在我的主要功能我加3元到数组,但只分配给2.但是,当我打印出来它工作得很好?我期望打印一些奇怪的值。为什么这个或我做错了什么?
请注意'brry.data [3]'是第四个元素。 – Novak
对不起复制过去的错误 – Haagenti
这是[undefined behavior](http://stackoverflow.com/a/367662/1113392) – A4L