본문 바로가기

프로그래밍 언어/C언어

C언어 - 전역변수, 지역변수

 

 

main()함수에서는 5를 할당한 i를 선언하고

 

또 다른 함수를 만들어 10을 할당한 j를 선언하여

 

각 함수에서 출력해보자.

 

#include <stdio.h>

int getprint(int j) {
	j = 10;

	printf("%d\n", j);
	return 0;
}

int main() {
	int i, j = 0;
	i = 5;

	printf("%d\n", i);
	getprint(j);
}

 

가장 일반적이라면 위와 같은 코드로 작성할 수 있다.

 

 

이 때 우리는 getprint()함수에 매개변수를 통해 j의 값을 전달해줄 수 있다.

 

왜냐하면 getprint에서는 j가 선언되어있지않고 main() 함수 범위에서만 사용이 가능하기 때문이다.

 

 

한국어 느낌으로 말하자면...

i와 j는 main() 지역에서 선언되어있고 매개변수를 통해 getprint() 지역에서도 값을 전달받았다.

 

 

 

그렇다면 i 이든, j 이든 처음부터 선언을 해주면 되지않나?!

 

 

일단 가능은 하다!

가능은 한데...

#include <stdio.h>

int i, j;

int getprint() {
	j = 10;

	printf("%d\n", j);
	return 0;
}

int main() {
	i = 5;

	printf("%d\n", i);
	getprint();
}

 

해당 코드는 i 와 j 를 미리 선언해주고 값을 할당하고 출력을 하였다.

 

즉 i 와 j 는 전역에서 쓸 수 있다! (전역변수다!)

 

 

물론 해당 코드에 이와 같이 쓰는건 편하긴 하다!

 

하지만 이렇게 쓰지 않는 이유는....

 

긴 코드를 작성하면 매우 많은 변수들을 선언할텐데

저렇게 전역변수를 쓰면 꼬일 수도 있고.. 겹칠 수도 있다.

 

 

그리고 긴 코드에서 전반적으로 공통된 변수를 선언하여 사용한다면

오류발생시 수정할 때 원하는 부분만이 아닌 전반적인 수정이 필요할 수도..ㅠㅠ

 

'프로그래밍 언어 > C언어' 카테고리의 다른 글

C언어 - 포인터 기초  (0) 2021.02.17
C언어 - static  (0) 2021.02.15
C언어 - 숫자 표현 범위  (0) 2021.02.03
C언어 - 배열 문법  (0) 2021.01.25
C언어 - 배열과 함수  (0) 2021.01.24