C에서 포인터와 구조체에 문제가 있습니다 (알다시피, 아주 간단합니다!). 나는 절차 적 패러다임을 실천하고 있었다. 디버거를 사용하는 것은 처음입니다. 왜냐하면 저는 제 인생에서 일찍부터 필요하지 않았기 때문입니다. < 그래서 제게 도움을 주시면 고맙겠습니다.C 포인터의 문제점
int main(int argc, char** argv) {
node_t * list = NULL;
addNodo(list, 1);
printf("x: %d", list->info);
return (EXIT_SUCCESS);
}
:이 일을하고
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;
}
}
를 실행 한 다음, 그것을 채우기 위해
typedef struct node {
int info;
struct node *next;
struct node *prev;
} node_t;
그리고이 함수 :
나는 목록을 만들기 위해 다음과 같은 구조를 정의 그것은 나에게 분할 오류를 던지고있어! 내가 디버깅 할 때 ++++ 행을 지날 때까지 모든 것이 재미 있고 게임이다. 목록 주소는 0x0으로 돌아가서 작동하도록 할 수 없다. 어딘가에 오류가 있다는 것을 알고 있지만, 포인터에 대한 지식으로는 완벽합니다. 제발 내 실수를 감지하고 몇 가지 조언을 가르쳐주세요.
nodo_t은 무엇입니까? – TimFoolery