-1
我有一個C程序,實現arraylist(動態數組,但我不明白如何或爲什麼我不能打印數組大小。當我嘗試這樣做,程序只是crash.Heres程序。打印arraylist大小崩潰
arraylist.c
#include "arraylist.h"
void arraylist_initial(struct arraylist *list) {
list->size = 0;
list->data = NULL;
}
int arraylist_get_size(const struct arraylist list) {
return list.size;
}
value_type* arraylist_get_data_collection(const struct arraylist list) {
return list.data;
}
void arraylist_set_data_collection(struct arraylist *list, value_type* data) {
list->data = data;
}
void arraylist_add(struct arraylist *list, value_type value) {
int size = arraylist_get_size(*list);
value_type *new_data;
new_data = realloc(list->data, (size + 1) * sizeof new_data[0]);
if (new_data)
{
new_data[size] = value;
arraylist_set_data_collection(list, new_data);
++list->size;
}
}
value_type arraylist_get(const struct arraylist list, int index) {
if(index < arraylist_get_size(list)) {
return list.data[index];
}
else {
return NULL;
}
}
int arraylist_indexof(const struct arraylist list, value_type value) {
int index = 0;
for(; index != arraylist_get_size(list); ++index) {
if(strcmp(list.data[index], value) == 0) {
return index;
}
}
return -1;
}
int main(void){
struct arraylist list;
arraylist_initial(&list);
arraylist_add(&list, "1");
arraylist_add(&list, "2");
arraylist_add(&list, "3");
arraylist_add(&list, "4");
arraylist_add(&list, "5");
arraylist_add(&list, "6");
arraylist_add(&list, "7");
arraylist_get_size(list);
int index = 0;
for(; index != 8; ++index) {
printf("CHECK: %s\n", arraylist_get(list, index));
}
return 0;
}
arraylist.h
#define _ARRAYLIST_H
#include <stdio.h>
typedef char* value_type;
struct arraylist {
int size;
value_type* data;
};
extern void arraylist_initial(struct arraylist *list);
extern int arraylist_get_size(const struct arraylist list);
extern value_type* arraylist_get_data_collection(const struct arraylist list);
extern void arraylist_set_data_collection(struct arraylist *list, value_type* data);
extern void arraylist_add(struct arraylist *list, value_type value);
extern value_type arraylist_get(const struct arraylist list, int index);
extern int arraylist_indexof(const struct arraylist list, value_type value);
在,如果我做arraylist.c
printf(arraylist_get_size_list(list));
它只是崩潰,我沒有得到它?
謝謝
感謝您的answer.However,如果我嘗試你說什麼,我得到的錯誤:不兼容類型的 「arraylist_get_size」 的說法1和arraylist_get_size –
的衝突類型請參閱我的更新。結構的通過沒問題。我認爲你的錯誤在於你傳遞給printf的東西。 –
謝謝你。它的工作原理,但實際的代碼,它說的大小是7.但是,不應該是6?因爲它從索引0開始,我認爲它應該是0,1,2,3,4,5,6,爲什麼大小是7? –