2012-05-06 78 views
0

這對我的程序造成了很多問題。當我創建一個新的結構化指針陣列時,它們都等於'\0'?我檢查了它們是否在數組if(table_p -> buckets_array[i] == '\0'){ printf("ask this \n") ; }的末尾,對於數組中的每個成員都是如此。我檢查錯了嗎?不僅最後一個成員應該有\0嗎?爲什麼我的整個數組有' 0'?

typedef struct data_{ 
    char *key; 
    void *data; 
    struct data_ *next; 
}data_el; 

typedef struct hash_table_ { 
    void **order; 
    int *number_next_calls; 
    int *number_buckets; 
    int *buckets_size; 
    int *worst; 
    int *total; 
    float *average; 
    int (*hash_func)(char *); 
    int (*comp_func)(void*, void*); 
    data_el **buckets_array; 
} hash_table, *Phash_table; 

/*Create buckets array*/ 
table_p -> buckets_array = (data_el **)malloc(sizeof(data_el *)*(size+1)); 
table_p -> buckets_size = (int *)malloc(sizeof(int)*(size+1)); 

/*Setting order array*/ 
    table_p -> order = NULL; 

/*Setting inital condictions*/ 
table_p -> worst = (int *)malloc(sizeof(int)); 
table_p -> total = (int *)malloc(sizeof(int)); 
table_p -> average = (float *)malloc(sizeof(float)); 
table_p -> number_buckets = (int *)malloc(sizeof(int)); 

/*This is where I have isssue*/ 
for(i = 0; i < size; i++){ 
    table_p -> buckets_array[i] = NULL; 
    table_p -> buckets_array[i] -> buckets_size = 0; 

    if(table_p -> buckets_array[i] == '\0'){ 
     printf("ask this \n"); 
    } 
} 
+2

如果我說'NULL'和'\ 0'完全一樣,會有幫助嗎?所以如果你做了'buckets_array [i] = NULL;'然後是''buckets_array [i] =='\ 0''。 –

+0

是的,這真的會回答我的問題。謝謝 –

+0

好的。那麼,它們並不完全一樣,它們有不同的類型。但同樣的價值! –

回答

2

在您的代碼,您有:

table_p -> buckets_array[i] = NULL; 
table_p -> buckets_array[i] -> buckets_size = 0; 

這好像是說:

table_p -> buckets_array[i] = NULL; 
NULL -> buckets_size = 0; 

這是不好的。

+0

謝謝你指出。 –

0
if(table_p -> buckets_array[i] == '\0'){ 

我已經在你前面的(非常相似)後指出,這table_p->buckets_array[i]的類型是「指向data_el」,而「\ 0」是一個整型常量。請在發佈之前閱讀。

相關問題