C 기본 문법 – 변수와 상수 – 2 – 상수 선언과 사용

C 기본 문법 – 변수와 상수 – 2편: 상수 선언과 사용 완전 정복!

안녕하세요, C 언어를 열심히 공부하고 계신 여러분 😊
이번 시간에는 절대 바뀌지 않는 값, 바로 **상수(constant)**에 대해 배워보겠습니다!

변수는 말 그대로 ‘변할 수 있는 값’을 저장하는 공간이었죠?
그렇다면 상수는? 네 맞습니다!
‘한 번 정해지면 절대 바뀌지 않는 값’을 저장하는 공간이에요.

프로그래밍을 하다 보면, 절대로 바뀌면 안 되는 값이 있어요.
예를 들면 원주율(π = 3.141592), 최대값 한계, 오류 코드
이런 값들은 실수로라도 변경되지 않도록, 상수로 관리하는 것이 안전하고 효율적입니다!

그럼 이제 C 언어에서 상수를 어떻게 선언하고 사용하는지, 하나하나 예시와 함께 자세히 알아볼게요 🧠


상수란?

상수(Constant)는 프로그램 실행 중에 절대로 값이 바뀌지 않는 데이터입니다.

  • 상수는 초기화한 값만 사용 가능
  • 중간에 값을 변경하려 하면 컴파일 에러 발생
  • 가독성 향상, 오류 방지, 의미 전달의 효과

🎯 비유하자면,
상수는 “금고에 잠가둔 금화” 같은 거예요.
꺼내볼 수는 있지만, 절대로 바꿀 수는 없는 값이죠!


C 언어에서 상수를 선언하는 방법 2가지

방법 1. const 키워드 사용

const int MAX_SCORE = 100;
  • MAX_SCORE는 프로그램 내에서 절대 변경 불가
  • const를 사용하면 컴파일러가 자동으로 보호해줍니다

방법 2. #define 전처리 지시자 사용

#define PI 3.141592
  • 컴파일 전에 텍스트 치환되는 방식
  • 자료형이 없고, 단순한 값 치환에 유리
  • 전통적으로 많이 쓰이는 방식

const#define의 차이점 비교

항목 const #define
자료형 있음 (int, float 등) 없음
범위 스코프를 가짐 (지역/전역 가능) 전체 파일
디버깅 시 확인 가능 불가능 (컴파일 전 치환됨)
타입 검사 안 됨
세미콜론 필요 여부 필요함 없음 (; 쓰면 오류!)

추천: 복잡한 프로그램에서는 const를 사용하는 것이 안정적입니다!


코드 예제로 알아보기

const 사용 예시

#include <stdio.h>

int main() {
    const float PI = 3.14f;
    float radius = 5.0;
    float area = PI * radius * radius;

    printf("원의 넓이: %.2f
", area);
    return 0;
}

출력 결과:

원의 넓이: 78.50

📌 만약 PI = 3.1415;처럼 값을 변경하려 하면?
❌ 컴파일 에러가 발생합니다!


#define 사용 예시

#include <stdio.h>

#define MAX_USERS 100

int main() {
    printf("최대 사용자 수는 %d명입니다.
", MAX_USERS);
    return 0;
}

출력 결과:

최대 사용자 수는 100명입니다.

📌 MAX_USERS는 단순히 코드 상에서 100으로 치환됩니다.


다양한 자료형의 const 선언 예시

const int year = 2025;
const float taxRate = 0.1f;
const char grade = 'A';
const char* greeting = "Hello!";

🎯 문자열 상수도 const를 붙여서 읽기 전용 포인터로 사용할 수 있어요!


전역 상수 vs 지역 상수

const int GLOBAL_LIMIT = 100;  // 전역 상수

int main() {
    const int LOCAL_LIMIT = 50;  // 지역 상수
    printf("%d, %d
", GLOBAL_LIMIT, LOCAL_LIMIT);
    return 0;
}
  • 전역 상수: 모든 함수에서 접근 가능
  • 지역 상수: 선언된 블록 안에서만 사용 가능

상수를 사용하는 이유

이유 설명
코드 가독성 향상 PI vs 3.141592 → 이름으로 의미가 명확해짐
유지보수 용이 값 변경 시 한 줄만 고치면 됨
의도 전달 절대로 바꾸지 말아야 할 값임을 명확히 표현
컴파일 에러 유도 실수로 변경 시 에러 발생 → 안전한 코드 유도

상수 관련 실전 팁

✅ TIP 1: 자주 쓰는 값은 전역 const로 관리

const int MAX_BUFFER_SIZE = 1024;
  • 여러 함수에서 재사용 가능
  • 유지보수가 쉬워요!

✅ TIP 2: #define은 매크로와 조건문에 활용

#define DEBUG_MODE

#ifdef DEBUG_MODE
    printf("디버그 출력
");
#endif

✅ 상수 선언 요약 정리

문법 예시 설명
const 자료형 변수명 = 값; const int MAX = 100; 정적 타입, 컴파일 시 타입 체크
#define 매크로명 값 #define PI 3.14 단순 값 치환, 자료형 없음

⚠️ 상수 사용 시 주의할 점

주의사항 설명
const는 자료형이 반드시 있어야 함 const PI = 3.14; ❌ → 오류 발생
const는 세미콜론 필요, #define은 세미콜론 금지 #define PI 3.14;
#define은 디버깅 시 값 추적 어려움 복잡한 코드에선 const 추천
문자열 상수는 변경 금지 "Hello" 같은 문자열은 불변입니다
포인터에 const 붙일 때는 위치에 따라 의미가 다름 const char* p vs char* const p는 완전히 다름

마무리하며 💬

상수는 안전하고 명확한 프로그래밍을 위한 기본 요소입니다.
초기에는 “굳이 안 써도 되지 않나?” 싶겠지만,
프로그램이 커질수록 상수의 중요성은 배가 됩니다.

다음 시간에는 변수와 상수의 활용을 더욱 확장하는,
연산자와 표현식에 대해 배워보겠습니다!

그럼 오늘도 함께 성장해 주셔서 감사합니다.
코딩은 실수 없이 조금씩! 🚀 감사합니다 😊

답글 남기기