1. Struct
Struct(구조체)는 구조체 멤버중 가장 큰 변수의 크기를값을 기준으로 잡고 기준값의 크기에 나머지 변수를 순서대로 차곡 차곡 배치하여 구조체의 전체 크기가 결정 된다. 아래의 예시 코드를 보자.
#include
typedef struct test{ int a; long c; char b; char d:1, //d:1의 의미는 char d를 1bit 의 크기로 계산하고 사용한다는 의미 e:1, f:1, g:2, i:1, k:1; long h; } test; int main(void) { test k; k.g=1; // printf("a:%d \n",k.g); printf("size : %d\n",sizeof(k)); return 0; }
구조체 형태 도식화 (long 은 64bit 운영체제에서 8byte 이다. 아래의 표는 64bit 기준)
int (4byte) |
|
|
|
| |||
long (8byte) | |||||||
Char(1) | Char(1) |
|
|
|
|
|
|
Long (8byte) | |||||||
test struct의 사이즈는 얼마일까요? 64bit 머신을 기준으로 32byte이다. (long 8byte)
의아하지 않나요? 보통은 int (4byte), char(1byte)이므로, 총 4+8+1+1+8 = 22byte 라고 여길텐데 말입니다.
2. Union
Union(공용체)의 크기는 공용체 멤버 변수 중 가장 큰 크기의 값을 하나 할당하고 모든 멤버가 그 메모리를 공유하게 된다.
typedef union { char a; int b; long c; } Aion
'컴퓨터 > C' 카테고리의 다른 글
[C언어][개발역량평가] 자료형(Data Type)의 크기(Size) (0) | 2013.08.19 |
---|---|
[C언어][개발역량평가] printf 서식 문자 (0) | 2013.08.19 |
[Linux] GCC 사용 예제 (0) | 2013.08.09 |
[C언어] #if #endif 조건부 컴파일 (0) | 2013.02.20 |
[C언어] 가변인자함수 (0) | 2013.02.18 |