我正在學習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