[C언어] 변수(Variable), const 변수
[C언어] 변수(Variable), const 변수
By i!kohong(아이코홍)
변수란? (Variable ?)
프로그램에서 변경될 수 있는 데이터는 메모리(memory)에 보관이 된다.
값을 변경할수 있는 데이터. 데이터를 보관해둘 필요가 있을 때 변수를 사용
메모리란?
연속된 데이터 바이트의 모임, 메모리의 각 바이트는 주소(address)를 갖는다.
메모리에는 저장할 데이터 값의 형식(Type)에 따라 메모리가 얼마만클 필요한지가 결정됨.
변수를 사용하기 위해서 특정 크기의 메모리를 준비하는 것을 "변수를 메모리에 할당한다."라고 명칭함.
변수 선언 방법
- 데이터형 변수명;
- 데이터형 변수명1, 변수명2, ... ;
→ 저장될 값의 데이터형에 따라 필요한 만큼 메모리를 할당받고, 이름을 붙여서 사용한다.
→ 변수를 선언하고 나면 변수의 이름을 이용해서 메모리에 접근할 수 있다.
char ch; //char 형 변수를 선언하고, 변수의 이름을 ‘ch‘라고 명칭한다.
ch = 'A'; //변수에 값을 저장합니다.
printf("%c", ch); // 변수의 값을 읽어옵니다.
★ 주의 : 변수의 선언문은 다른 모든 문장보다 앞쪽에 위치해야 한다.
int main(void) {
int i; // 함수의 시작 부분에 선언되었으므로 올바른 변수 선언
i = 100; // I에 100을 저장하는 대입문
double d; // 대입문 다음에 선언되었으므로 잘못된 변수 선언
...
}
변수의 사용
변수의 값을 읽어오거나 저장하려면 변수명을 이용해야됨.
변수에 값을 저장할 때는 변수의 데이터형과 같은 형의 값을 저장해야한다.
변수에 값을 저장하면, 이전 값은 사라지고, 마지막에 저장한 값만 남는다.
데이터형 = 변수명 // 변수를 선언
변수명 = 값;
/* 변수명에 값을 대입(assignment)한다.
[왼쪽 : 변수명, 가운데 : 대입연산자, 오른쪽 : 값] */
printf("형식문자열", 변수명);
// 출력할 값을 형식을 알려주고 화면에 출력할 출력물을 작성.
변수의 초기화
변수가 처음 메모리에 할당될 때 값을 지정하는 것.
변수가 메모리에 할당 될 때 초기화 하지 않으면, 변수 할당 전에 메모리에 들어 있던 값이 할당된 변수의 초기값이 되며, 어떤값을 가질지는 알 수 없다. 이러한 알수 없는 값을 ‘쓰레기 값’이라고 한다.
변수를 초기화 할 때 데이터형에 맞게 초기값을 설정해야된다.
여기서 쓰레기 값이란?
변수가 어떤 값을 가졌는지 알 수 없다는 뜻이다.
변수 초기화 방법
데이터형 변수명 = 초기값;
char ch = 'A';
int i = 100;
데이터형 변수명 = 초기값, 변수명 = 초기값 ... ;
int x = 10, y = 20;
데이터형 변수명;
변수명 = 초기값;
double d;
d = 0.0;
예시
#include <stdio.h>
int main(void)
{
int amount;
int price = 1000;
printf("수량 : %d, 가격 : %d\n", amount, price);
amount = 100;
price = 2000;
printf("수량 : %d, 가격 : %d\n", amount, price);
return 0;
}
결과
수량 : -945616489, 가격 : 1000
수량 : 100 , 가격 : 2000
const 변수
변수를 선언할 때 변수의 데이터형 앞에 const 키워드를 지정하면 값을 변경할수 없다.
상수와는 다르게 변수이기에 메모리에 할당이 되며, 단순 값을 변경을 못하도록 설정한다.
일반 변수과 같이 값을 초기화해야되며, 초기화를 안할시 쓰레기 값을 가지게 된다.
const 변수 선언 방법
const 데이터형 변수명 = 초기값;
- const int i = 100;
- const char ch = 'A';
★ 주의 : const 변수로 선언된 값은 변경이 불가능하므로, 변경을 시도시 컴파일 에러가 발생을 하게 된다.
예시
#include <stdio.h>
int main(void)
{
const int i = 100; // const 변수 선언
const double d; //초기화가 안되어서 쓰레기 값을 가짐
i = 200; //const 변수이므로 변경이 불가 컴파일 에러 발생
d = 3.14; //const 변수이므로 변경이 불가 컴파일 에러 발생
}