피씨컴의 기울어진 공관

3/8

프로그래밍/공부 2013. 3. 11. 10:08

● 사용자 정의 타입

struct    :    구조체

enum    :    열거, 나열체

union    :    공용체

 

 

- enum    :    열거자 하나하나를 심볼로 만들어 준다.

enum    타입명(생략가능) charater

{

기사 =0,                                    (정수형은 암묵적으로 형변환을 해준다)

엘프,

법사,

군주,

}

 

 

- union    : 제일큰 자료형의 메모리를 할당하고 그것을 공유

union u

{

int a;

int b;

}

운영체제로부터 메모리공간 어딘가에 해당자료형 만큼의 공간을 할당 받고 그위에 a라는 문을 달고 그안에는 쓰레기 값이 들어있다.

 

- struct

struct A

{

int a;  (4 byte)    ← 맴버변수

char b;  (1 byte) 

int c;  (4 byte)

}

총 할당된 바이트 12 byte

 

클래스의 특징

가장큰 바이트로 끊어서 할당하기 때문에 본래 할당되어야할 바이트보다 더 많이 할당되는 경우가 있음  위에 처럼 원래는 9바이트가 맞는거지만 맴버변수중 가장큰 바이트인 4바이트씩 끊어서 계산하면 1바이트가 남게 되고 그 1바이트를 위해 클래스는 기꺼이 4바이트를 더 할당한다. 그렇기 때문에 3바이트 더 많은 12바이트가 할당된 것.

이때 나머지 3바이트는 패딩비트라 불리운다.

 

A                B

    char             int

     int              char

   short            short

  double          double

     24                16            

 

A : 자리배치 잘 안된예

B : 자리배치 잘 된 예

이렇게 배치 순서에 따라서 갈릴 수도 있다.

 

그러나 자리배치가 잘 안된 A도

#pragma pack(push,1)

#pragma pack(pop)

을 쓰면 잘 정리될 수 있다는듯???

 

 

-  typedef

명령어를 이용해서 타입 재정의(전처리기 아님 재정의)

 

 

- 구조체 특징 2

1. C++의 구조체는 함수도 포함 할수 있다.

2. 생성자와 소멸자도 있다.

3. 맴버함수 분할도 가능하다.

4. 생성자는 오버로딩이 가능하다.

5. 구조체에서 int a : 4 는 4bit만 쓴다는 말이다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

사용자 정의타입은 출력하거나 기본연산이나 못한다.

얼마나 어떻게 봐야하는지 모르기 대문

자신한테 자기가 하면 Over랩 strcat 조심(가독성)

'프로그래밍 > 공부' 카테고리의 다른 글

AIP 1장  (0) 2013.04.16
정리정리  (0) 2013.03.20
3/7  (0) 2013.03.11
3/5  (0) 2013.03.07
3/4  (0) 2013.03.07
Posted by 피씨컴