첫 코딩 질문입니다.
#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변수가 초기화되는 시점과 그 사용에 대해 더 자세히 설명하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
26년 1회차 기출 강의
0
50
2
기출문제
0
55
1
C언어에서
0
58
1
포인터 질문
0
56
2
실기 공부 시작 하려고 하는데요
0
93
2
필기자료 사라졌나요?(실기 일주일만에 안돼서 재도전-_-)
0
92
2
26년 1회 실기 해설 강의
0
112
2
53번 4-1 자료 오류 있는 것 같습니다.
0
105
2
7번문제
0
88
2
C언어 변형문제 9번문제 Pdf 수정요청
0
76
2
메서드 오버드라드
0
70
2
실수
0
63
1
공부 우선순위 우선강의 알려주세요
0
129
1
생성자 호출순서 강의 10번 문제 30분대 질문입니다
0
70
2
25년 2회 기출 5:40 질문입니다.
0
52
2
모의고사1회 3번 파이썬문제
0
85
2
C언어 출제변형 6번 문제
0
55
2
c언어 출제변형 강의 질문
0
42
2
28:40
0
45
2
C : 언어 배열과 문자열 수업자료
0
40
2
파이썬 리스트, 딕셔너리 질문
0
57
2
모의고사 관련 질문 건
1
79
3
자료 내용 오류
0
73
2
정적 변수, 정적 메서드(static) v2
0
55
2





