불친절한 C++ 노트는 작성자가 C++을 복습한 내용을 적은 것이며, 운영체제(리눅스)나 컴퓨터 구조와 같은 저수준의 관점에서 C++을 바라본다.
Variable |
변수(Variable)란 값을 저장할 수 있는 공간이라고 할 수 있지만,
정확히는 다음 정보들의 조합입니다.
메모리 식별자 (= 메모리 주소)
타입 식별자 (= 자료형)
변수 식별자 (= 변수 이름)
{Content, Value}는 {Address, Type}을 통해 알 수 있으므로,
실제로 필요한 정보는 {Address, Type, Name} 임에 주목하기 바랍니다.
Memory Identifier (Memory Address) |
메모리 식별자는 데이터가 어디에 저장되어 있는지 가르킵니다.
보통 메모리 주소를 통해 나타내며, 변수 이름에 오퍼랜드(&)를 붙이면 얻을 수 있습니다.
하지만 메모리 식별자만 가지고 값을 알아낼 수 없습니다.
void형 포인터를 주고, 값이 무엇인지 알아내란 말과 똑같기 때문이죠.
데이터가 어떤 방식(포맷)으로 저장되어 있는지가 필요한데,
이것을 제공하는 것이 데이터 타입 식별자(=자료형, Data Type)입니다.
Data Type Identifier (Data Type) |
자료형 식별자는 데이터를 해석하고 사용하는 방법을 가르킵니다.
데이터의 구조/운용법을 알려주는 자료형 지정자와,
데이터의 동작/사용법을 제한하는 자료형 제한자가 조합되어 만들어지죠.
- 자료형 지정자 (Data Type Specifier)
- 데이터 해석 방법 (및 데이터 포맷)
- 데이터 사용 방법 (및 관련 연산자)
- 데이터 생성/소멸 과정
* note
어떤 자료형이든 void 타입으로 안전하게 변환될 수 있습니다.
이 특성 때문에 void 타입은 generic type 으로 불립니다.
- 자료형 제한자 (Data Type Qualifier)
- const
- volatile
- restrict
- _Atomic (since C11)
#사례연구(1) : 변수의 식별자 정보 알아내기 |
메모리 식별자 알아내기
변수 식별자 이름 알아내기
자료형 식별자 알아내기 (1)
* note
i 는 필자의 컴퓨터가 사용하는 int 자료형의 아이디를 나타낸다.
각 컴퓨터마다 다를 수 있다.
자료형 식별자 알아내기 (2)
#사례연구(2) : long long을 string으로 해석하기 |