2025. 2. 23. 16:29ㆍ프로그래밍 언어/C
3.1 변수란?
C 언어에서 변수(Variable)란 값을 저장할 수 있는 메모리 공간을 의미하며, 프로그램 실행 중 값이 변경될 수 있는 데이터를 가리킵니다.
변수는 데이터를 저장하고 활용할 수 있도록 이름을 부여한 메모리 공간이라고 이해하면 됩니다.
1. 변수의 개념과 선언 방법
1.1 변수란?
컴퓨터는 데이터를 저장하고 처리하기 위해 메모리를 사용합니다.
변수는 이러한 메모리 공간을 특정한 이름(변수명)으로 참조할 수 있도록 해주는 역할을 합니다.
📌 변수를 사용하면 다음과 같은 이점이 있습니다.
- 데이터를 저장하고 쉽게 접근할 수 있음
- 값을 필요에 따라 변경할 수 있음
- 코드의 가독성과 유지보수성이 향상됨
1.2 변수 선언 방법
C 언어에서 변수를 사용하려면 반드시 선언(Declare)해야 합니다.
변수 선언은 다음과 같은 형식으로 작성됩니다.
데이터타입 변수명;
📌 변수 선언의 구성 요소
- 데이터 타입(Data Type): 변수에 저장할 값의 종류를 지정 (int, float, char 등)
- 변수명(Variable Name): 변수를 참조할 때 사용할 이름
- 세미콜론(;): 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);) |
변수의 개념을 이해하면 이후 연산자, 조건문, 반복문을 배울 때 더욱 쉽게 활용할 수 있습니다.
'프로그래밍 언어 > C' 카테고리의 다른 글
C언어 초급 - 3장: 변수와 데이터 타입 (3.3 상수 (const)) (0) | 2025.02.23 |
---|---|
C언어 초급 - 3장: 변수와 데이터 타입 (3.2 기본 데이터 타입) (0) | 2025.02.23 |
C언어 초급 - 2장: C 프로그램의 구조 (2.3 출력 함수 printf()) (0) | 2025.02.23 |
C언어 초급 - 2장: C 프로그램의 구조 (2.2 주석(Comment)) (0) | 2025.02.23 |
C언어 초급 - 2장: C 프로그램의 구조 (2.1 C 프로그램의 기본 구조) (0) | 2025.02.23 |