반응형

구조체(7-3-1) 예제

 

 

 

 


 

 


 

포인터 c는 연결 리스트에서 첫 번째 student 구조체의 주소를 저장하는 데 사용된다.

 

 첫 번째 구조체의 주소가 있어야만 다른 연결된 구조체들을 찾아 갈 수 있다.

 

두 개의 student 구조체 변수를 선언했으며, 첫 번째 student 구조체의 주소가 c에 대입된다.

 

그런 다음 첫 번째 구조체의 멤버 변수 next에 두 번째 student 구조체의 주소를 저장한다.

 

두 번째 student 구조체의 멤버 변수 next에는 다음에 연결될 구조체가 없으므로 NULL을 대입해준다.

 

이러한 포인터를 사용하여 데이터들을 서로 연결고리로 연결한 것 같은 구조가 연결 리스트이다.

 

연결 리스트에서는 첫 번째 구조체의 주소만 알면 다른 구조체들에 접근할 수 있다.

 

즉, c의 주소에 먼저 접근한 뒤 멤버 변수 next를 찾아 다음 구조체의 주소를 얻고,

 

여기서 또 멤버 변수 next에 저장된 값을 이용하여 다음 구조체의 주소를 얻는다.

 

이런 식으로 계속 반복하게 되면 원하는 구조체를 찾을 수 있다.

 

참고로 맨 마지막 구조체의 자기 자신을 가리키는 포인터에는 NULL값이 저장되어야

 

더 이상 연결되는 다음 구조체는 없다 라고 알 수 있다.

 


 

위 예제 코드에서while 루프는 연결 리스트에서 데이터를 차례대로 가져오는 전형적인 예시이다.

 

포인터 d는 루프에서 사용되는 구조체 포인터로 처음에는 c로 설정되어있다.

 

이는 위 코드에서 d = c; 부분을 보면 이해 할 것이다.

 

루프는 연결 리스트의 첫 번째 구조체부터 차례대로 접근하여,

 

첫 번째 구조체부터 차례대로 구조체의 멤버 값을 출력한다.

 

출력이 끝나면 next에 저장된 다음 구조체의 주소를 d에 대입하여 다음 구조체로 넘어간다.

 

이 코드는 d = d -> next; 부분을 보면 이해갈 것이다.

 

이 while루프는 d가 NULL값이 될 때까지 계속된다.

 

d가 NULL 값이 되면 이전 구조체의 next 값이 NULL 값이었다는 것을 의미하고,

 

이전 구조체가 마지막 구조체라는 것을 의미한다. 

 

그리고 루프는 종료된다.

반응형

+ Recent posts