저는 C에서 잠시 동안 링크 된 목록을 작성하려고 시도해 왔으며 그렇게하기도했습니다. 이제 전역 포인터/변수를 지역 변수로 대체하려고합니다. 따라서 함수 사이에 구조체를 전달해야합니다. 문제는 피사체에 대해 더 많이 읽을수록 더 많은 실험을 할수록 더 많은 오류와 폭발이 발생한다는 것입니다.전역 변수가없는 연결된 목록
내 코드가 약간 길기 때문에 (100 줄), 나는 그것이 무엇을하고 어떻게하는지 설명하려고 노력할 것이다. 어떤 기능을하기 전에
struct node {
char Name[21];
struct node *Next;
};
나는 또한 내 구조체에 대한 포인터를 발표 :
나는 구조체를 발표했다
struct node *global;
* 세계 전역 포인터가 그렇지?
지금 내 연결된 목록을 처리 그 안에서 새로운 포인터 세 가지 기능이 있습니다
void add(void); //add nodes to list with *global, *pointer and *last
struct node *pointer *last;
void print(void); //print node inside the list with *global and *pointer
struct node *pointer;
void quit(void); //free malloc'd list using *global and *pointer
struct node *pointer;
내가 여기에 다른 함수에 함수에서 어떤 식 으로든 내 구조를 통과하지 오전 나에게 분명하다. 나는 global * global을 함수 내부의 로컬 포인터에 할당하고 있는데, 잘 작동하지만, 배워야하는 것은 아니다.
정확히 내가 여기 어떻게해야하고 무엇을, 나는 나의 문제에 대한 해답을 찾고 있었어요하지만 분명히 나는 그래서
C.
의 기초에 큰 뭔가를 놓친 거지? 내가, 예를 들어,이 인쇄를 추가하고 종료 함수에 전달 될 수있는 내 주요 함수 내에서 링크 된 목록을 만들 수 있도록 어떻게 기능 내부struct node *global;
를 이동할 수 있습니다. 그리고 어떻게 이러한 함수에서이 목록을 반환합니까?
또한 원래 구조체는 코드 시작 부분에 있어야합니까? 아니면 전역 포인터/변수를 피하기 위해 각 함수 안에 다시 만들어야합니까?
작업 그것을 고치지 마라. – Mikhail
이 답변이 (http://stackoverflow.com/a/15084897/1057230) 정확하게 당신을 도울 수있는 것이기를 바랍니다 :-) –