조금씩 꾸준히 완성을 향해

[C 언어] 변수의 종류와 유효범위 본문

기타 언어/C 언어

[C 언어] 변수의 종류와 유효범위

all_sound 2023. 3. 15. 13:12

변수 (variable)

•  데이터를 저장할 수 있는 메모리의 기억 공간

 

 

▶ 변수 생성 규칙 및 특징

 - 예약어(키워드)는 사용 불가

 - 공백을 포함 불가

 - 첫 글자는 영문과 언더바(_)만 사용 가능

 - 언더바(_) 이외의 특수문자는 사용 불가

 - 대소문자를 구분

 - ex) cds(o), break(x), _break(o), age30old(o), 40age(x), choi_dasol(x)

 

 

▶ 변수 Type

 

 

▶ 변수 선언

 int age;

 int age=40;

 

 

▶ 변수의 종류

- 지역 변수(local variable) , 전역 변수(global variable)

- 정적 변수(static variable), 동적 변수(dynamic variable)

 

º 지역 변수

 - 함수/블록 안에서 선언하는 변수

 - 함수/블록의 종료와 함께 메모리 상에서 소멸

 - 초기값이 없으면 쓰레기 값이 들어감

 - 스택 영역에 저장

#include <stdio.h>

int main(){
  if(1){
    int num1=10;
    printf("%d", num1);	  
  }
  printf("%d", num1);
}

출력 결과 - ERROR

- if 절 안에서 선언된 변수는 if 절 밖에서 호출할 수 없다.

 

 

º 전역 변수

 - 함수/블록 밖에서 선언하며 전체 함수에 영향을 미치는 변수

 -프로그램이 종료될 때 메모리 상에서 소멸

 - 데이터 영역에 저장됨

#include <stdio.h>

int num1;

void func(){
  num1 = 20;	
}

int main(){
  num1 = 10;
  printf("%d", num1);
  func();
  printf("%d", num1);	
}

출력 결과 -  1020

 

 

º 정적 변수

 - static으로 선언하며 선언된 블록 내에서만 사용가능

 - 함수가 종료되어도 소멸되지 않고, 값이 그대로 유지

 - 프로그램이 종료될 때 메모리 상에서 소멸

 - 초기값이 없으면 0이 입력되고, 단 한번만 초기화

 - 데이터 영역에 저장

#include <stdio.h>

void add(int i){
	static int sum = 0;
	sum = sum + i;
	printf("sum: %d\n", sum);
}

int main(void){
	add(10);
	add(5);
	add(3);
}

sum: 10
sum: 15
sum: 18

 

 

º 동적 변수

 - 메모리 동적할당으로 생성되는 변수

 - Run time 시간에 메모리를 할당

 - 동적 기억장소에 할당하여 메모리 낭비를 피하려는 목적

 - 무조건 포인터를 사용해야 함

 - 힙 영역에 저장됨

 

 

 

 

 

※ 유튜브 흥달쌤 깨알 C언어 특강을 직접 정리한 내용입니다.