학부 수업 내용 정리/자료구조
Constant (상수)
supersumin
2025. 3. 13. 03:11
Constant(상수) 란?
C언어에서 상수란 일반적으로 변경할 수 없는 값이다.
Literal Constant(일반 상수)
숫자와 문자같이 고정된 값이다.
Ex code
int x = 30; // x는 30이라는 value를 가지는 int type 변수
const int y = 12; // y는 12라는 value를 가지는 int type 변수이며, 이는 바꿀 수 없다.
y = 15; // Error 발생
포인터 상수 (Pointer Constant) vs. 상수 포인터 (Constant Pointer)
Pointer Constant(포인터 상수, int *const ptr)
Pointer 자체가 Constant로 pointer로 가리키는 주소를 변경할 수 없다는 뜻이다.
Constant Point(상수 포인터, const int *ptr)
Pointer가 가리키는 대상이 Constant로 pointer가 가리키는 값을 변경할 수 없다는 뜻이다.
Ex code
#include <stdio.h>
int main() {
int a = 10, b = 20;
// 1. 포인터 상수 (Pointer Constant)
int *const ptr1 = &a; // ptr1은 다른 주소로 변경 불가
*ptr1 = 15; // (O) 가리키는 값 변경 가능
// ptr1 = &b; // (X) ERROR: 주소 변경 불가
// 2. 상수 포인터 (Constant Pointer)
const int *ptr2 = &a; // ptr2는 다른 주소로 변경 가능
// *ptr2 = 30; // (X) ERROR: 가리키는 값 변경 불가
ptr2 = &b; // (O) 주소 변경 가능
// 3. 상수 포인터 + 포인터 상수
const int *const ptr3 = &a; // ptr3은 주소 변경 불가 + 값 변경 불가
// *ptr3 = 40; // (X) ERROR: 값 변경 불가
// ptr3 = &b; // (X) ERROR: 주소 변경 불가
printf("ptr1: %d\n", *ptr1); // 15
printf("ptr2: %d\n", *ptr2); // 20
printf("ptr3: %d\n", *ptr3); // 10
return 0;
}