IT 프로그래밍

[따배시] 9.4 변수의 영역과 지역 변수

기술1 2024. 1. 15. 15:20
반응형

변수는 영역에 따라서 변수를 받을 수 있고 받지 않을 수도 있다.

 

{}를 기준으로 변수를 구분할 수 있는데 {}안에 int a; 가 선언이 되었다면 {}밖에 값에서 a를 불러올 수는 없는 것이다. 블록 안에서만 유효하기 때문이다.

 

강의에서는 이 내용을 예제와 함께 설명해주었다.

#include <stdio.h>
#include <string.h>

int int_max(int i, int j);

int int_max(int i, int j)
{
	int m; //{} 블록 안에서만 유효 
	m = i > j ? i : j;
	return m;
}

int main()
{
	int a;

	a = int_max(1, 2);

	printf("%d\n", a);
	printf("%p\n", &a);
	{
		int a; //영역이 다를 경우 변수 이름이 같아도 문제가 없다 다른 변수로 인식
		a = int_max(4, 5);

		printf("%d\n", a);
		printf("%p\n", &a);

		int b = 123;
	}

	printf("%d\n", a);
	printf("%\n", &a);

	return 0;
}

 

 

출력결과


위 코드를 사용했을 때 해당 코드의 &a값이 다른 것을 볼 수 있다.

int a가 두번 쓰였는데 이 각각을 다른 변수로 인식한다는 것이다.

 

 

 

아래는 Chat gpt에서 설명한 지역변수이다.

이 변수는 해당 변수가 선언된 블록, 함수, 또는 메서드 내에서만 유효하며, 외부에서는 접근할 수 없습니다. 다른 지역변수와 동일한 이름의 변수가 다른 범위에서 선언되더라도 서로 독립적으로 존재합니다.

지역변수는 주로 함수 또는 메서드 내에서 사용되며, 해당 함수 또는 메서드가 실행될 때 생성되고 종료될 때 소멸합니다. 이는 변수가 프로그램의 다른 부분에서 간섭받지 않고 특정 작업을 수행하기 위해 제한된 범위에서만 사용되도록 하는데 도움이 됩니다.

반응형