search_song함수의 ptr_snode = ptr_snode;의 의미가 궁금합니다
407
投稿した質問数 8
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의 값을 미리 직전 값으로 변경하는 경우가 있으므로, 이러한 상황에서는 전체적으로 코드 로직이 변경될 수 있으니 주의해야 합니다.
안내 드린 내용이 도움이 되셨길 바랍니다. 감사합니다.
안녕하세요. 계속 프로젝트를 해야지 하다가 결제하고 환경 설정 중입니다.
0
14
1
[문제 해결]전화번호부 v1.0(1) 인덱스 관련하여 질문입니다. 강의를 아무리 돌려봐도 인덱스를 업데이트 안하네요.
0
53
2
music libaray
0
68
1
자료구조 1강, 코드, array --> tmp 할당, 방 4개에서 방 8개로 이사함 ㅅㅅ
0
98
1
자료구조 1강, 코드, array --> tmp 할당, 방 4개에서 방 8개로 이사함 ㅅㅅ
0
98
0
배열대신 포인터 arithmetic으로 써야하는 이유가 있을까요?
0
627
1
스택 구현
0
368
0
학습 자료 pdf 파일에 관해서
0
844
1
포인터 참조 질문
0
319
1
redefinition; different basic types 오류
2
1270
2
한글이 깨지는 경우 어떻게 해결하나요?
0
343
0
안녕하세요. c언어 독학중인 학생입니다.
0
554
1
search 함수의 선언 궁금증
0
284
1
두번째 예제 질문있습니다!
0
208
0
메모리 동적 할당에서 메모리공간을 확장시킬 때
1
393
0
realloc함수 쓰지 않는이유
0
262
0
안녕하세요 교수님. free()관련해서 질문 있습니다.
0
239
0
동적으로 할당된 메모리의 life time 관련하여 질문 있습니다.
0
276
0
Node에 대한 코드 안에 링크필드 선언할 때
3
210
0
stack 구현에서 동적할당중 형변환의 유무에 관한 질문
0
293
0
find함수가 제대로 작동을 안합니다
0
275
1
3강 문자열에 등장하는 코드에 관한 질문입니다.
1
302
0
컴파일 실행 중에 오류가 났는데, 구글링으로도 해결방법을 모르겠어서 남깁니다.
0
238
0
21분23초 char **tmp1에서 캐스팅을 해주는 이유는 무엇인가요?
0
350
2

