첫 코딩 질문입니다.
#include<stdio.h>
voidinitialize() {
staticint initialized = 0;
if (!initialized) {
printf("초기화...\n");
initialized = 1;
} else {
printf("초기화 완료되었습니다.\n");
}
}
intmain() {
initialize();
initialize();
return0;
}
여기서
출력값:
초기화....
초기화 완료되었습니다.
이해가 안가는데 풀이 한번 부탁드립니다 ㅠ
밑에 예제도 한번 풀이 같이 해주시면 감사하겠습니다.
답변 2
0
안녕하세요, 아래 코드에 대해서 설명드립니다.
#include <stdio.h>
void initialize() {
static int initialized = 0;
if (!initialized) {
printf("초기화...\n");
initialized = 1;
} else {
printf("초기화 완료되었습니다.\n");
}
}
int main() {
initialize();
initialize();
return 0;
}
static 변수는 프로그램이 시작된 이후로 한 번만 초기화되는 변수입니다.
처음에는 초기화...\n 라는 것이 출력되고 이후에는 1로 바뀝니다. 그러면 계속 1로 값을 상주하여 가지고 있게 됩니다.
그래서 그 다음에는 !initialized이 되면 C언어는 조건문에 0이 아닌 어떤 숫자가 오든 참이 되고
앞에 있는 NOT(!)을 만나 거짓이 되므로 else로 들어갑니다.
그래서 "초기화 완료되었습니다.\n"를 출력합니다.
0
안녕하세요, 인프런 AI 인턴입니다. skaerjgh2님.
질문해주신 코드는 static 변수를 활용하여 한 번 초기화된 값을 유지하는 예제입니다. 각 부분을 설명드리겠습니다.
#include<stdio.h>
void initialize() {
static int initialized = 0;
if (!initialized) {
printf("초기화...\n");
initialized = 1;
} else {
printf("초기화 완료되었습니다.\n");
}
}
int main() {
initialize();
initialize();
return 0;
}
코드의 동작 원리:
initialize함수가 호출될 때,static int initialized = 0;구문은 함수가 처음으로 호출될 때 한 번만 실행됩니다.static키워드는 변수의 생명 주기가 프로그램이 종료될 때까지 이어지게 하며, 변수가 다른 호출에서도 자신의 값을 유지하게 합니다.첫 번째 호출: 처음에
initialized는 0으로 설정되어 있고,!initialized조건이 참(true)이기 때문에"초기화...\n"이 출력됩니다. 그 후,initialized는 1로 설정됩니다.두 번째 호출:
initialized가 이미 1로 설정되어 있으므로!initialized조건이 거짓(false)이 되고, 이때"초기화 완료되었습니다.\n"이 출력됩니다.
간단히 말해, static 변수는 한 번만 초기화되어 그 이후로는 재할당하지 않는 변수입니다. 따라서 두 번째 이후 호출에서는 이미 초기화가 완료되었음을 출력하게 됩니다.
유사한 내용을 다루고 있는 기존의 답변을 추천드리니, 추가적으로 학습하시는데 도움이 될 거라 생각합니다:
- Static 변수 질문: 언제 초기화되는가?:
static변수가 초기화되는 시점과 그 사용에 대해 더 자세히 설명하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
정처기 2026-3 실기 문의
0
59
2
정처기 실기 3회 컴싸 사용 여부
0
38
1
모의고사 1 회 2번문제 중
0
54
2
26-2 이론문제 재탕
1
40
1
26-2년도 코드문제
0
31
0
26-2 코드문제
0
36
1
15분 48초 질문
0
44
2
26-1년도 이론문제 재탕
0
58
1
26-1년도 코드문제 재탕
0
43
0
이론재탕만 눈치챘어도
0
69
1
25-3년도 이론문제 재탕
0
52
1
25-3년도 코드문제 재탕
0
38
0
출력값 문의
0
45
2
25-2 분기커버리지
0
45
0
25-2 이론 재탕
0
60
1
25-1 이론 재탕
0
49
1
서브넷 마스크
0
48
2
모의고사 1회 계산문제 2개 맞았는데
0
67
2
업캐스팅 문제 예시 4번 부모 호출
0
48
2
모의고사 자료 해설이 너무 불친절하네요.
0
93
2
부모의 생성자 출력 관련
0
44
2
24-3 이론파트 재탕문제
0
56
0
누락코드
0
44
1
다차원 배열 포인터 질문있습니다
0
67
3





