지역변수
지역변수는 정해진 영역에서만 사용 가능한 번수이다.
여기서 말하는 정해진 영역이란 중괄호에 의해 형성되는 영역을 의미한다.
예를 들어서 test라는 함수를 선언하고 그 안에서 변수를 하나 선언했다고 하자.
그러면 그 변수는 test 함수안에서만 사용 가능할 뿐 다른 함수에서는 사용이 불가능하다.
#include <stdio.h>
void test (int num)
{
int tes = 4;
printf("%d\n", tes*num);
}
int main ()
{
test(10);
printf("%d", tes*15);
return 0;
}
따라서 위 코드에서 tes 변수는 test 함수에서 선언된 변수이기 때문에 main 함수에서는 사용할 수가 없다.
그러나 test 함수에서 선언된 변수는 test 함수가 끝난 후 사라지기 때문에 다시 tes 변수를 선언해 준다면
다른 함수에서도 사용할 수 있다.
그러므로 위 코드를 다음과 같이 바꾸면 에러가 발생하지 않는다.
#include <stdio.h>
void test (int num)
{
int tes = 4;
printf("%d\n", tes*num);
}
int main ()
{
int tes = 6;
test(10);
printf("%d", tes*15);
return 0;
}
그러나 같은 이름의 변수를 다른 의미로 사용하는 것은 혼선이 발생할 수 있기 때문에 피하는 것이 좋다.
반복문, 조건문 등에서도 중괄호를 사용하여 영역을 만들기 때문에 지역변수를 만들 수 있다.
반복문, 조건문에서 선언된 지역변수도 마찬가지로 해당 반복문, 조건문을 벗어나면 사용이 불가능하다.
#include <stdio.h>
int main ()
{
int a;
for (a=0;a<5;a++)
{
int b = 0;
printf("%d\n", b);
}
printf("%d사용불가능", b);
return 0;
}
따라서 위 코드에서 변수 b 도 for 문을 벗어나면 사용이 불가능하다.
지역변수
전역변수는 프로그램의 시작과 동시에 메모리에 할당되며 종료 시까지 존재하고 어디서든 접근이 가능하다.
#include <stdio.h>
int num;
int main ()
{
printf("%d", num);
return 0;
}
전역변수를 선언하는 방법은 위 코드에서 볼 수 있듯이 중괄호에 포함되지 않은 영역에서 선언해 주는 것이다.
전역변수는 초기화하지 않더라도 0으로 초기화된다. 이 사실은 위 코드를 통해서도 확인할 수 있다.
전역변수와 지역변수
전역변수와 같은 이름의 지역변수를 선언하게 되면 전역변수는 해당 지역에서 사용이 불가능하게 된다.
그러나 위에서도 말했다시피 같은 이름의 변수를 다른 의미로 사용하는 것은 혼선이 발생할 수 있기때문에 피하는 것이 좋다.
이럴 때 전역변수는 어디에서든지 사용이 가능하기 때문에 지역변수보다 편리할 수 있다.
'C언어 > C언어 문법' 카테고리의 다른 글
[C언어] 2차원배열, 다차원배열 (0) | 2024.02.11 |
---|---|
[C언어] 배열 (0) | 2024.02.11 |
[C언어] 재귀함수 (0) | 2024.02.10 |
[C언어] 함수의 선언, 호출, 정의 / 반환(return), 매개변수, 전달인자, 파라미터(parameter), 아규먼트(argument) (0) | 2024.02.10 |
[C언어] switch문 (0) | 2024.02.10 |