7.1 변수의 속성, 지역변수, 전역변수
전역 변수와 지역 변수
지역 변수 : 함수 또는 블록 안에서 정의되는 변수, 지역 변수는 해당 블록이나 함수 안에서만 사용이 가능하다.
전역 변수 : 함수의 외부에 선언되는 변수, 전역 변수는 소스 파일의 어느 곳에서도 사용이 가능하다.
1 2 3 4 5 6 7 8 | #include <stdio.h> int total = 20; // 전역변수 int main() { int sum = 0; // 지역 } | cs |
전역 변수는 코드 어느 곳에서 사용이 가능하고, 지역 변수는 해당 함수 안에서만 사용이 가능하다는 특징을 지니고있다.
지역 변수
블록(중괄호) 안에 선언 되는 변수이다.
지역 변수는 변수가 선언된 블록 안에서만 접근과 사용이 가능하며, 위의 코드에서 변수 x는 sub()함수에서만 사용이 가능하고 변수 y는 while루프 안에서만 가용이 가능하다. 따라서 while루프를 벗어나서 y를 사용할 수는 없다.
1 2 3 4 5 6 7 8 9 10 11 | int sub(void) { int x - 0; while (flag != 0) { int y; ... } y = 0; //오류! } | cs |
이러한 지역 변수는 다른 지역안에 동일한 이름의 변수를 선언해도 컴파일 에러가 생기지 않는다.
그리고 변수가 시작된 블록에서 선언되어 해당 블록이 끝나면 변수는 사라진다.
- 지역 변수의 초기 값을 정해주지 않으면 쓰레기값이 들어가게된다. 초기화 시켜주지 않으면 컴파일 올가 발생하니 꼭 초기화를 해줘야한다.
함수의 매개변수
함수에서 매개변수를 정의하는것도 해당 함수에서만 사용되는 지역 변수라고 할수가 있다.
그러나 함수 호출시의 인수 값으로 초기화 되어있기 때문에 초기화를 따로 하면 안된다.
전역 변수
함수 외부에서 선언되는 변수이다. 범위가 소스파일 전체이기떄문에, 어디서는 접근이 가능하고 수정이 가능하다.
이러한 전역 변수는 동일한 이름의 변수를 선언해서는 안된다.
- 프로그램 시작과 동시에 생성되어 프로그램이 종료되기 쩐까지 메모리에 존재한다.(최적화를 위해서는 지역 변수를 주로 사용하는 것이 좋다.)
- 사용을 권장하지 않는다.