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

반응형