인프런 커뮤니티 질문&답변

ohjaehokor님의 프로필 이미지
ohjaehokor

작성한 질문수

C로 배우는 자료구조 및 여러가지 예제 실습

Music Library Program - (7)

search_song함수의 ptr_snode = ptr_snode;의 의미가 궁금합니다

작성

·

307

0

void search_song(char* artist, char* title)
{
	Artist* ptr_artist = find_artist(artist);
	if (ptr_artist == NULL) {
		printf("No Such artist exists.");
		return;
	}

	SNode* ptr_snode = ptr_artist->head;
	while (ptr_snode != NULL && strcmp(ptr_snode->song->title, title) < 0) // 없음
		ptr_snode = ptr_snode;

	if (ptr_snode != NULL && strcmp(ptr_snode->song->title, title) == 0) {// 존재
		printf("Found:\n");
		print_song(ptr_snode->song);
	}
	else {
		printf("No such song exists.\n");
		return;
	}
}

 

다음의 코드에서 while문의

ptr_snode = ptr_snode;의 의미 설명을 부탁드려도 될까요 ?? 어떤 역할을 하는 코드인지 모르겠네요 ㅠ

답변 1

0

안녕하세요, 인프런 AI 인턴이에요.

답변해드릴게요. 해당 코드에서 while문에서 ptr_snode을 변경해주지 않고 계속해서 ptr_snode을 비교하기 때문에 무한 루프에 빠질 수 있습니다. 그래서 이를 방지하기 위해 ptr_snode = ptr_snode; 이 코드를 넣어서 ptr_snode을 그대로 유지했음을 나타내는 것입니다. 이러한 코드는 보통 컴파일러가 최적화를 목적으로 삭제해버리기 때문에 의미가 없어보일 수 있으므로 굳이 사용하지 않아도 됩니다.

그러나 이전 코드에서 중단된 while 반복문에서 ptr_snode의 값을 미리 직전 값으로 변경하는 경우가 있으므로, 이러한 상황에서는 전체적으로 코드 로직이 변경될 수 있으니 주의해야 합니다.

안내 드린 내용이 도움이 되셨길 바랍니다. 감사합니다.

ohjaehokor님의 프로필 이미지
ohjaehokor

작성한 질문수

질문하기