공부기록, 2021-10-07(c goto)
- c goto
- goto 문
goto 레벨;
라벨(label)에는 점프하는 문장이 있는 라벨을 지정한다. 라벨은 "switch 문"에서 조금 소개 했었는데, 쉽게 말하면 문장에 붙이는 식별자와 같은 것이다. 문장에 라벨을 붙이면 goto 문으로 그 자리로 이동할 수 있다. 레벨은 다음과 같이 지정한다.
라벨 선언
라벨 : 문장
이렇게 하면 문장에 라벨을 지정할 수 있다. 라벨에 사용되는 이름은 변수 등의 명명 규칙과 동일하다. 문장에 라벨을 붙이면, goto 문을 사용하여 자유롭게 프로그램의 흐름을 변경할 수 있다. 다만 goto 문은 동일한 함수 내에 있지 않으면 이동할 수 없다. 다른 함수의 문장에 바로 이동할 수 없기 때문에 주의하자.
코드1
#include <stdio.h>
int main() {
int iCount = 0;
LOOP:
printf("카운터 = %d\n" , iCount);
iCount++;
if (iCount < 10) goto LOOP;
return 0;
}
이 프로그램은 반복 처리를 goto 문으로 재현한 것이다. iCount 변수가 10 이하이면 goto 문을 사용하여 LOOP 레이블로 돌아가고, 그렇지 않으면 프로그램을 종료한다.
그러나 for 문이나 while 문을 사용할 수 있는 곳에서는 어김없이 for 문이나 while 문을 사용하여 반복 처리를 실시해야 하며, goto 문을 사용해서는 안된다. 대부분의 경우 goto 문을 사용하지 않아도, if 나 for 문 같은 제어문에서 충분히 원하는 처리을 수행할 수 있다. goto 문을 남용하는 경우 프로그램의 흐름을 파악할 수 없으며 유지 보수가 어렵 기 때문에 goto 문은 원칙적으로 사용해서는 안된다.
goto 문을 사용하는 곳이라고 생각되는 곳은, goto 문을 사용하여 프로그램을 스마트하게 기술할 수 있는 특별한 알고리즘을 작성하는 경우이거나, 여러 단계로 중첩된 제어문에서 벗어날 같은 경우이다. 예를 들어 for 문을 중첩된 프로그램이 중간에 처리를 끝내고 싶은 경우, break 문을 사용하여 한단계의 제어만 벗어날뿐 모든 제어를 벗어날 수 없다. 그래서 goto 문을 사용하여 벗어날 수 있다.
## 자주 하는 실수
- 기본기능으로 때우려고함
## 큐
- 어차피 헷갈리니 자주보고쓰자
## 내가 모르는 것
- c goto
## 일정
- 14:00 ~ 15:00 : 운동
- 15:00 ~ 16:00 : 운동
- 17:00 ~ 18:00 : 공부, 영상1업로드
- 18:00 ~ 19:00 : 공부, 영상2업로드
- 19:00 ~ 20:00 : 공부, 영상3업로드
- 20:00 ~ 21:00 : 공부
- 21:00 ~ 22:00 : 공부