C언어에서는 여러 방식을 통해 값을 활용할 수 있다.
이번 글에서는 const
, Define
, 지역변수
, 전역변수
에 대해 알아본다.
값이 변하지 않아야 하는 데이터는 상수(constant)로 선언할 수 있다.
const float PI = 3.14159;
const
를 쓰면 해당 변수는 이후 값을 변경할 수 없다.#define MAX 100
#define
은 코드 전체에서 치환되는 매크로 상수로, 컴파일 전에 MAX가 100으로 바뀐다.자료형이 없고 디버깅이 어렵기 때문에 복잡한 코드에서는 const가 더 많이 쓰인다. 라고 설명하는 경우가 많지만, 임베디드 시스템처럼 메모리가 제한적이라면 define을 활용하는 것이 좋다.
변수가 선언된 위치에 따라 사용 범위(scope)가 달라진다.
int global = 10; // 전역 변수
int main() {
int local = 5; // 지역 변수
printf("%d %d", global, local);
}
지역변수 (local variable)
: 함수 안에서 선언된 변수.
→ 함수가 끝나면 메모리에서 사라지고, 다른 함수에서는 쓸 수 없다.
전역변수 (global variable)
: 함수 밖에서 선언된 변수.
→ 프로그램 전체에서 접근 가능하며, 모든 함수에서 공유된다.
전역변수는 편리하지만 프로그램이 커지면 의도치 않은 값 변경, 디버깅 어려움 등의 문제가 생길 수 있어서 남발하지 않는 것이 좋다. 라고 알려져있지만, 오히려 자주 활용하는 변수는 전역변수로 선언하는 경우도 많다.
알파벳, 숫자, _ 사용 가능 (단, 숫자로 시작할 수 없음)
대소문자 구분 (score와 Score는 다른 변수)
예약어(int, return 등)는 변수명으로 사용할 수 없음
변수와 자료형은 C언어의 가장 기본이면서도, 가장 많이 쓰이는 개념이다.
특히 printf, scanf, const, #define, 변수의 범위(scope)는 초반에 제대로 익혀두면 이후 코딩이 훨씬 수월해진다.
@nullvuild