변수(variable)는 프로그램이 조작할 수 있는 이름이 붙은 저장 공간을 의미합니다. C++에서 모든 변수는 반드시 특정 자료형(type)을 가지며, 이 자료형은 다음 세 가지를 결정합니다.
- 변수가 차지하는 메모리의 크기와 구조
- 해당 메모리에 저장할 수 있는 값의 범위
- 변수에 적용할 수 있는 연산의 종류
C++ 변수 선언 방법
가장 간단한 변수 선언 예시는 다음과 같습니다.
int my_val = 5;
위 코드에서 my_val은 int(정수)형 변수이며, 값 5를 저장하고 있습니다. 일반적인 변수 선언 형식은 다음과 같습니다.
type variable_name;
선언과 동시에 초기화까지 하고 싶다면 아래처럼 작성합니다.
type variable_name = value;
변수 이름 작명 규칙
C++에서 변수 이름은 영문자, 숫자, 밑줄(_)로 구성할 수 있으며, 반드시 영문자 또는 밑줄로 시작해야 합니다. 숫자로 시작하는 이름은 허용되지 않습니다. 또한 C++은 대소문자를 엄격하게 구분(case-sensitive)하기 때문에 my_val과 My_Val은 서로 다른 변수로 인식됩니다.
C++의 기본 자료형
C++에서 가장 많이 사용되는 기본 자료형(built-in types)은 아래 표와 같습니다.
| 번호 | 자료형 | 설명 |
|---|---|---|
| 1 | bool | true 또는 false 두 가지 논리값만 저장합니다. |
| 2 | char | 보통 1바이트(옥텟) 크기를 가지는 정수형으로, 문자 하나를 저장합니다. |
| 3 | int | 실행 환경(머신)에서 가장 자연스러운 크기의 정수를 저장합니다. |
| 4 | float | 단정밀도(single-precision) 부동 소수점 값을 저장합니다. |
| 5 | double | 배정밀도(double-precision) 부동 소수점 값을 저장합니다. |
| 6 | void | 타입이 없음(absence of type)을 나타내며, 주로 반환값이 없는 함수에 사용됩니다. |
더 복잡한 자료형들
C++은 위의 기본 자료형 외에도 열거형, 포인터, 배열, 참조, 구조체, 클래스처럼 더 복합적인 변수를 만들 수 있습니다.
열거형(Enumeration, enum)
열거형은 요소(element), 멤버(member), 열거자(enumerator)라고 불리는 명명된 값들의 집합으로 구성된 데이터 타입입니다. 열거자의 이름은 언어 내에서 상수처럼 동작하는 식별자 역할을 하므로, 관련된 상수들을 의미 있게 그룹화할 때 유용합니다.
포인터(Pointer)
포인터는 다른 변수의 메모리 주소를 저장하는 특수한 변수입니다. 포인터를 활용하면 메모리를 직접 다루는 저수준 프로그래밍이 가능하지만, 잘못 사용하면 오류가 발생하기 쉽습니다.
참조(Reference)
참조는 C 언어에서 물려받은 포인터보다는 기능이 제한적이지만, 그만큼 더 안전하게 사용할 수 있는 단순 참조 데이터 타입입니다. 별칭(alias)처럼 원본 변수에 접근할 때 활용됩니다.
구조체(Data Structure, struct)
구조체는 하나의 이름 아래 여러 데이터 요소를 묶어놓은 그룹입니다. 이때 묶인 각 데이터 요소를 멤버(member)라고 부르며, 멤버들은 서로 다른 자료형과 서로 다른 크기를 가질 수 있습니다.
클래스(Class)
클래스는 구조체 개념을 확장한 것입니다. 구조체처럼 데이터 멤버를 포함할 수 있을 뿐만 아니라, 함수(멤버 함수)까지 멤버로 가질 수 있어 객체 지향 프로그래밍의 핵심 요소로 사용됩니다.