我有一個問題,我的指針和結構在C(我知道,我知道,很基本!)。我正在練習我的程序範式。這是我第一次使用調試器,因爲在我的生活中我並沒有真正需要它:所以如果你請幫助我,我會很感激。問題與指針在C
我定義了以下結構做一個列表:
typedef struct node {
int info;
struct node *next;
struct node *prev;
} node_t;
然後這個函數來填充它:
void addNodo(node_t * list, int x){
node_t * pointer;
node_t * temp;
temp = (node_t *)malloc(sizeof(node_t));
temp->info = x;
temp->next = NULL;
temp->prev = NULL;
pointer = list;
if(pointer == NULL){ //it's empty so start it
list = temp;
return;
}
if (pointer->info <= x) { //I like my lists tidy so...
while((pointer->next != NULL) && (pointer->info <= x)){
pointer = pointer->next;
}
if(pointer->next == NULL){
pointer->next = temp;
temp->prev = pointer;
return;
}
pointer->next->prev = temp;
temp->next = pointer->next;
temp->prev = pointer;
pointer->next = temp;
return;
}
}
然後,這樣做:
int main(int argc, char** argv) {
node_t * list = NULL;
addNodo(list, 1);
printf("x: %d", list->info);
return (EXIT_SUCCESS);
}
它拋出了一個分段錯誤!當我調試它時,一切都很有趣,遊戲直到它通過++++行,列表地址回到0x0並且無法使其工作。我知道在某處有一個錯誤,但根據我對指針的瞭解,這非常好。請,檢測我的錯誤,並教我一些指針。
什麼是nodo_t? – TimFoolery 2011-04-20 00:30:44