공부/C programming

9. 변수의 참조 영역과 지속기간

natom_ 2016. 5. 13. 12:46
반응형

1. 지역변수 개념, 값을 유지하는 범위, 변수선언위치


<개념> 

지역 변수는 프로그램에서 선언한 변수가 변수의 참조 영역 안에서만 사용(참조)될 수 있는 변수이다.

함수/블록 안에서 선언된 변수로, 변수가 선언된 함수/블록 안에서만 참조할 수 있다. 블록은 {}로 묶은 코드로 함수의 본체뿐만 아니라 {}로 묶은 for문의 본체나 do~while문의 본체도 블록이다. 


<형식>

반환값의 자료형  함수명(매개변수 선언 목록)

{

자료형 지역 변수1;

자료형 지역 변수2;


: 함수 본체의 나머지 코드


←지역변수 1,2의 참조 영역


}





2. 전역변수 개념, 값을 유지하는 범위, 변수선언위치


<개념>

전역변수는 함수 밖에서 선언한 변수로, 전역 변수의 선언문 이후에는 어떤 함수 안에서도 참조할 수 있다.

전역변수의 참조 영역은 자신이 선언된 곳부터 프로그램 끝까지다.


<형식>

전처리기 지시자

사용자 정의 함수의 원형 선언

자료형 전역변수1;


int main()

{

......

}


int function1(...)

{

.....

}


자료형 전역변수2;

double function2(...)

{

....

}





3. 자동변수 개념, 변수선언방법 


자동변수란 변수의 지속 기간이 함수/블록의 실행 시작부터 끝까지로 한정되는 변수이다.

자동변수는 함수가 호출되면 변수에 기억장소가 할당되고 함수 실행이 끝나면 변수의 기적장소가 해제되어 더이상 참조할 수없는 변수이다.



4. 정적변수 개념, 변수선언방법



5. 외부변수 개념, 변수선언방법



6. 종합예제 (소스코드, 실행결과)


<소스 코드>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <stdio.h>
#include <stdlib.h>
 
 
void vtest();
void stest();
 
//2. 전역변수 
int num3 = 10;
//프로그램 모두에 영향을 준다. 
 
 
int main(int argc, char *argv[]) {
 
 
    //1. 지역 변수
    int num1 = 1;
 
 
    printf("main()의 지역변수 : %d\n",num1);
    vtest();
 
 
    stest();         //정적 변수 선언된 함수 
 
 
    printf("main()에서 전역변수 출력 : %d \n", num3);
 
    stest();         //정적 변수 선언된 함수 
 
 
    return 0;
}
 
 
void vtest()
{
 
    int num2 = 1;
 
    num3++;
 
    printf("vtest()의 지역변수 : %d\n",num2);
    // printf("main()의 지역변수 vtest()에서 실행 : %d\n",num1);
    // 실행되지 않는다. mun1 undeclared 에러가 발생  
 
 
    printf("vtest()에서 전역변수 출력 : %d \n", num3); 
 
 
 
    stest();         //정적 변수 선언된 함수 
 
}
 
 
void stest()
{
 
    //3. 정적 지역 변수
    static int count = 0;
 
 
    count++;
    printf("정적 변수 count 값 : %d \n",count); 
 
 } 
cs

<실행 결과>



반응형

'공부 > C programming' 카테고리의 다른 글

11. 구조체  (0) 2016.05.24
10. 포인터  (0) 2016.05.17
dd  (0) 2016.05.12
8. 함수  (0) 2016.05.10
D  (0) 2016.05.03