C언어 초급 - 3장: 변수와 데이터 타입 (3.1 변수란?)

2025. 2. 23. 16:29프로그래밍 언어/C

3.1 변수란?

C 언어에서 변수(Variable)값을 저장할 수 있는 메모리 공간을 의미하며, 프로그램 실행 중 값이 변경될 수 있는 데이터를 가리킵니다.
변수는 데이터를 저장하고 활용할 수 있도록 이름을 부여한 메모리 공간이라고 이해하면 됩니다.


1. 변수의 개념과 선언 방법

1.1 변수란?

컴퓨터는 데이터를 저장하고 처리하기 위해 메모리를 사용합니다.
변수는 이러한 메모리 공간을 특정한 이름(변수명)으로 참조할 수 있도록 해주는 역할을 합니다.

📌 변수를 사용하면 다음과 같은 이점이 있습니다.

  • 데이터를 저장하고 쉽게 접근할 수 있음
  • 값을 필요에 따라 변경할 수 있음
  • 코드의 가독성과 유지보수성이 향상됨

1.2 변수 선언 방법

C 언어에서 변수를 사용하려면 반드시 선언(Declare)해야 합니다.
변수 선언은 다음과 같은 형식으로 작성됩니다.

데이터타입 변수명;

📌 변수 선언의 구성 요소

  1. 데이터 타입(Data Type): 변수에 저장할 값의 종류를 지정 (int, float, char 등)
  2. 변수명(Variable Name): 변수를 참조할 때 사용할 이름
  3. 세미콜론(;): C 언어에서는 명령문 끝에 세미콜론을 붙여야 함

1.3 변수 선언 예제

#include <stdio.h>

int main() {
    int a;        // 정수형 변수 선언
    float pi;     // 실수형 변수 선언
    char grade;   // 문자형 변수 선언

    return 0;
}

📌 설명

  • int a; → a라는 이름을 가진 정수형 변수 선언
  • float pi; → pi라는 이름을 가진 실수형 변수 선언
  • char grade; → grade라는 이름을 가진 문자형 변수 선언

1.4 변수의 초기화

변수를 선언하면서 초기값을 지정할 수도 있습니다.

int a = 10;      // 정수형 변수 선언과 동시에 10으로 초기화
float pi = 3.14; // 실수형 변수 선언과 동시에 3.14로 초기화
char grade = 'A'; // 문자형 변수 선언과 동시에 'A'로 초기화

📌 변수를 사용하기 전에 반드시 값을 할당하는 것이 중요합니다.
C 언어에서는 변수를 초기화하지 않고 사용하면 쓰레기 값(Garbage Value, 이전 메모리 값)이 저장되어 있을 수 있습니다.


2. 변수의 메모리 저장 방식

변수가 선언되면 컴퓨터의 메모리(RAM)에 저장됩니다.
C 언어에서 변수가 저장되는 방식은 데이터 타입에 따라 다르며, 메모리 주소를 통해 접근할 수 있습니다.

2.1 변수와 메모리 주소

모든 변수는 메모리의 특정 주소(Address)에 저장됩니다.
C 언어에서는 &(주소 연산자)를 사용하여 변수의 메모리 주소를 확인할 수 있습니다.

#include <stdio.h>

int main() {
    int a = 10;
    
    printf("변수 a의 값: %d\n", a);
    printf("변수 a의 메모리 주소: %p\n", &a); // %p는 주소 출력 형식

    return 0;
}

출력 결과 (메모리 주소는 실행할 때마다 다를 수 있음)

변수 a의 값: 10
변수 a의 메모리 주소: 0x7ffc12345678

📌 설명

  • &a → 변수 a의 메모리 주소를 가져옴
  • %p → 포인터(주소) 값을 출력할 때 사용하는 서식 지정자

2.2 변수의 저장 크기

C 언어에서 변수의 크기는 데이터 타입에 따라 다릅니다.
일반적으로 변수의 크기는 아래와 같습니다.

데이터 타입 크기 (바이트) 저장 가능 범위
char 1 byte -128 ~ 127 (signed), 0 ~ 255 (unsigned)
short 2 bytes -32,768 ~ 32,767
int 4 bytes -2,147,483,648 ~ 2,147,483,647
long 4 ~ 8 bytes 시스템에 따라 다름
float 4 bytes ±3.4E-38 ~ ±3.4E+38
double 8 bytes ±1.7E-308 ~ ±1.7E+308

📌 변수 크기 확인 예제

#include <stdio.h>

int main() {
    printf("int: %lu 바이트\n", sizeof(int));
    printf("float: %lu 바이트\n", sizeof(float));
    printf("double: %lu 바이트\n", sizeof(double));
    printf("char: %lu 바이트\n", sizeof(char));

    return 0;
}

출력 결과 (운영체제 및 컴파일러에 따라 다를 수 있음)

int: 4 바이트
float: 4 바이트
double: 8 바이트
char: 1 바이트

💡 sizeof(자료형)을 사용하면 해당 자료형이 차지하는 메모리 크기를 확인할 수 있습니다.


2.3 변수의 메모리 저장 구조

변수는 스택(Stack) 메모리 영역에 저장됩니다.
C 언어의 메모리 구조는 크게 다음과 같이 나뉩니다.

메모리 영역 설명  예제
코드(Code) 영역 실행 코드가 저장되는 영역 프로그램의 명령어
데이터(Data) 영역 전역 변수, 정적 변수 저장 static int a;
힙(Heap) 영역 동적 메모리 할당 시 사용 malloc(), calloc()
스택(Stack) 영역 지역 변수, 함수 호출 정보 저장 int a;

📌 지역 변수는 스택에 저장되며, 함수가 종료되면 자동으로 제거됩니다.
전역 변수(global)는 데이터 영역에 저장되어 프로그램 종료 시까지 유지됩니다.


3. 정리

개념 설명
변수란? 프로그램 실행 중 값을 저장하고 변경할 수 있는 메모리 공간
변수 선언 데이터타입 변수명; 형식으로 선언 (int a;)
변수 초기화 선언과 동시에 값을 지정 (int a = 10;)
변수의 메모리 저장 변수는 스택(Stack) 메모리에 저장됨
메모리 주소 확인 &변수명을 사용하여 주소 확인 (printf("%p", &a);)

변수의 개념을 이해하면 이후 연산자, 조건문, 반복문을 배울 때 더욱 쉽게 활용할 수 있습니다.