반응형
변수는 영역에 따라서 변수를 받을 수 있고 받지 않을 수도 있다.
{}를 기준으로 변수를 구분할 수 있는데 {}안에 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에서 설명한 지역변수이다.
이 변수는 해당 변수가 선언된 블록, 함수, 또는 메서드 내에서만 유효하며, 외부에서는 접근할 수 없습니다. 다른 지역변수와 동일한 이름의 변수가 다른 범위에서 선언되더라도 서로 독립적으로 존재합니다.
지역변수는 주로 함수 또는 메서드 내에서 사용되며, 해당 함수 또는 메서드가 실행될 때 생성되고 종료될 때 소멸합니다. 이는 변수가 프로그램의 다른 부분에서 간섭받지 않고 특정 작업을 수행하기 위해 제한된 범위에서만 사용되도록 하는데 도움이 됩니다.
반응형
'IT 프로그래밍' 카테고리의 다른 글
[따배시] C++ 기초 (0) | 2024.03.04 |
---|---|
C++ 언어 기초 요약 (0) | 2024.03.04 |
[따배시 6.1] while문을 이용한 scanf 함수 정의 (0) | 2024.01.09 |
[따배시] 4.7 printf 함수의 변환 지정자들 (0) | 2024.01.05 |
[따배시] 4.5 기호적 상수와 전처리기 (0) | 2024.01.05 |