iOS/정보처리기사
[정보처리기사] C언어 - 함수와 변수의 유효범위
Chafle
2022. 6. 21. 21:57
반응형
#include<stdio.h>
int a=1, b=2, c=3;
int f(void);
int main(void) {
printf("%3d₩n", f());
printf("%3d%3d%3d₩n", a, b, c);
return 0;
}
int f(void){
int b, c;
a=b=c=4;
return(a+b+c);
}
해설
a,b,c는 전역변수이다.
int f(void)의 의미-> main함수 밑에 f라는 함수가 있다고 알려주는 함수.(큰 의미 없음)
main : 전역변수
a | b | c | |
1 | 2 | 3 | |
f내부 함수에 없으므로 전역변수 a에 4할당 |
4 |
f : 함수 내부는 지역변수
b | c | |
4 | 4 | |
a=b=c=4;
4와 가장 가까운 c부터 4를 할당
c에 4할당
b에 4할당
a에 4할당인데
함수 내부에 a가 없으므로 전역변수 a값에 4를 할당한다.
return(a+b+c); ->
a는 함수 내부에 없으니까 전역변수에 할당한 a인 4를 가져오고
b는 함수 내부에 b가 있으니까 전역변수까지 나갈 필요없고 4를 가져온다.
c도 마찬가지로 함수 내부에 c가 있으니까 전역변수까지 나갈 필요없고 4를 가져온다.
a+b+c = 12
12를 호출한 f()에 return하고 지역변수인 b,c값은 지워진다.
printf("%3d₩n", f());
3d는 세 개 공간을 만들고 우측부터 값을 채운다.
ㅇ12 -> 12 출력된다.
3개 공간을 만들었다고 해서 012 아님 주의
printf("%3d%3d%3d₩n", a, b, c);
지역변수는 사라졌기 때문에 b=4,c=4는 지워졌고
전역변수 a,b,c에 값을 가져오면 된다.
a=4, b=2,c=3
답
12
4, 2, 3
반응형