C
변수의 종류와 유효범위
김꼬알
2023. 3. 8. 17:55
변수
데이터를 저장할 수 있는 메모리의 기억공간
변수 생성 규칙 및 특징
- 예약어(키워드)는 사용할 수 없다
- 공백을 포함할 수 없다
- 첫 글자는 영문과 언더바(_)만 사용이 가능하다
- 언더바(_) 이외의 특수문자는 사용할 수 없다
- 대소문자를 구분한다
예제) 다음 중 변수로 사용 가능한 것은?
▶ 1, 3, 4, 6, 7 사용 가능
데이터 타입(자료형)
변수 선언
int 변수명;
int 변수명 = 초기값;
지역변수
- 함수/블록 안에서 선언하는 변수
- 함수/블록의 종료와 함께 메모리상에서 소멸
- 초기값이 없으면 쓰레기 값이 들어감
- 스택 영역에 저장됨
void main(){
if(1){
int num1 = 10; // if 블록 안에서 변수를 선언
printf("%d", num1);
}
printf("%d", num1); // if 블록 밖에서 변수를 선언하지 않았기 때문에 에러
}
전역변수
- 함수 블록 밖에서 선언하며 전체 함수에 영향을 미친다
- 프로그램이 종료될 때 메모리상에서 소멸
- 초기값이 없으면 0 값이 들어감
- 데이터 영역에 저장됨
int num1;
void main(){
num1 = 10;
printf("%d", num1); // 10
func();
printf("%d", num1); // 20
}
void func(){
num1 = 20;
} // 1020 이 출력됨
정적변수
- static 으로 선언하며 선언된 블록 내에서만 사용 가능
- 함수가 종료되어도 소멸되지 않고 값이 그대로 유지됨
- 프로그램이 종료될 때 메모리상에서 소멸
- 초기값이 없으면 0이 입력되고, 단 한번만 초기화
- 데이터 영역에 저장
void main(){
add(10);
add(5);
add(3);
}
int add(int i){
static int sum = 0; // 정적변수를 선언했기 때문에 앞에서 연산했던 값이 없어지지 않음
sum = sun + i;
printf("sum:%d\n", sum); // \n 은 엔터
} // 18로 출력됨
동적변수
- 메모리 동적할당으로 생성되는 변수
- Run time 시간에 메모리를 할당
- 동적 기억장소에 할당하여 메모리 낭비를 피하려는 목적
- 무조건 포인터를 사용해야 함
- 힙 영역에 저장됨