Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어 상수의 종류 총정리: 기본 상수와 2차 상수 이해하기

상수(Constant)란 프로그램 실행 도중 그 값을 변경할 수 없는 고정된 값을 의미합니다. 한 번 정해지면 프로그램이 끝날 때까지 항상 같은 값을 유지합니다.

C 언어에서는 숫자, 문자, 문자열 등이 모두 상수가 될 수 있으며, 어떤 데이터 타입이든 상수로 선언할 수 있습니다. 상수는 '리터럴(literal)'이라고도 부릅니다.

상수의 두 가지 유형

C 언어의 상수는 크게 두 가지로 나눌 수 있습니다.

1. 기본 상수(Primary Constants) – 정수형(Integer), 실수형(Float), 문자형(Character)처럼 가장 기본적인 데이터 타입으로 구성된 상수입니다.

2. 2차 상수(Secondary Constants) – 배열(Array), 구조체(Structure), 포인터(Pointer), 열거형(Enum) 등 파생된 자료구조를 활용한 상수입니다.

상수 선언 문법

C 언어에서는 const 키워드를 사용하여 변수를 상수로 만들 수 있습니다. const로 선언된 변수는 초기화 이후 값을 수정하려 하면 컴파일 오류가 발생합니다.

const 자료형 변수명 = 초기값;

기본 상수 예제

다음 예제는 삼각형의 넓이를 계산하는 프로그램입니다. 높이(height)와 밑변(base)을 const int로 선언하여 실행 중에 값이 바뀌지 않도록 했습니다.

#include<stdio.h>
int main(){
    const int height=20;
    const int base=40;
    float area;
    area=0.5 * height*base;
    printf("삼각형의 넓이 :%f", area);
    return 0;
}

실행 결과

삼각형의 넓이 :400.000000

2차 상수 예제

다음 예제는 포인터를 활용한 2차 상수의 개념을 보여줍니다. 포인터 변수 p에 일반 변수 a의 주소를 저장하고, 역참조(*p)를 통해 간접적으로 값을 변경하는 과정을 확인할 수 있습니다.

#include<stdio.h>
void main(){
    int a;
    int *p;
    a=10;
    p=&a;
    printf("a=%d\n",a); // a의 값 출력
    printf("p=%d\n",p); // p에 저장된 주소값 출력
    *p=12;
    printf("a=%d\n",a); // 포인터를 통해 변경된 a의 값
    printf("p=%d\n",p); // p에 저장된 주소값은 변하지 않음
}

실행 결과

a=10
p=6422036
a=12
p=6422036

실행 결과에서 볼 수 있듯이, 포인터 p가 가리키는 메모리 주소의 값을 변경하자 원래 변수 a의 값도 함께 12로 바뀌었습니다. 반면 포인터 자체에 저장된 주소값은 그대로 유지되는 것을 확인할 수 있습니다.