공용체

현 시점에서는 자주 사용하지 않고 있음.

union uniInfo
{
	int iKor;
	double fAver;
}

유니온은 초기화하고자 할 때, 구조체와 달리 각 멤버 변수를 초기화해주는 것이 아니다. 멤버 변수 중, 가장 큰 자료형의 크기만큼 메모리가 할당되고, 모든 멤버 변수가 그 메모리를 공유하여 사용한다.

즉, 위에 따지면 double 8바이트만 할당이 된다. 그렇기에 멤버 변수들의 주소는 같다

그렇기에 다른 형태의 자료형끼리는 비트 표현 방식이 다르기에 오해가 생길 수 있다. 바이트 수를 초과할 때 이어붙여서 만드는 것에는 사용이 가능함. (8바이트 4개를 구조체로 넣고 유니온의 멤버변수로 넣으면 32바이트가 가능해진다.)

정말 메모리가 부족할 때 사용하는 문법 (ex 임베디드드)


열거체 열거체 : 상수를 한번에 여러개 만들기 위한 문법. 멤버라는 개념이 없음. 그렇기에 멤버 접근 연산자 (.) 을 사용할 수 없고 마찬가지로 () 연산자 불가.

enum NUMBER{
	ONE = 1,
	TWO,
	THREE,
	FOUR,
	END
}

int main(){
	NUMBER eNumber = ONE;
}

자료형의 크기는 무조건 4바이트로 고정되어 있음. 여러 상수를 사용할 때에는 매우 효율적임.

(실제 사용시에는 초기화해서 사용하지 않고, 안에 선언한 상수를 사용함)

cout << ONE << endl;

<상식>

int iData = ONE + TWO;

이 코드는 원래 자료형이 다르기에 안되는 것이 맞지만, 컴파일러 상에서 상수로 변환하여 계산을 해주는 것임.