struct (3) 썸네일형 리스트형 구조체 정렬 및 원리 struct pack { char a; int b; }; sizeof(pack); 여기서 sizeof(pack)의 값 즉, 구조체의 크기는 5가 될 수도 있지만 다른 값이 될 수도 있습니다. 다른 값이 나오는 이유는 구조체를 정렬하기 때문입니다. 구조체를 정렬하면 프로그램 성능 향상을 위해 구조체의 각 멤버 사이에 특정 크기의 공간을 비워둡니다. struct pack2 { char a; char b; int aa; }; struct pack3 { char a; int aa; char b; }; 위의 구조체들이 4바이트 정렬돼있다고 가정했을 때의 구조는 다음과 같습니다. (1)은 pack2, (2)는 pack3, (3)은 1바이트로 정렬되었다고 가정했을 때의 pack2입니다. 일단 (1)에서 a는 A 블록.. 비트 구조체 비트 구조체는 비트 멤버를 포함한 구조체인데 비트 멤버는 원래 타입 크기보다 작게 크기를 지정할 수 있는 멤버입니다. struct { (변수 타입) (이름):(비트 크기); ... }; 만약 int a:4;인 경우 4비트의 크기를 가진 int 멤버를 생성합니다. 그래서 원래 int와 달리 나타낼 수 있는 숫자 범위가 적습니다. struct { int a:4;//위치 0비트 int b:12;//위치 4비트 int c:16;//위치 16비트 };//총 크기 32비트 비트 멤버의 타입은 실수가 아닌 단일 숫자 타입만 가능합니다. 즉, 실수나 배열, 구조체 등은 안됩니다. 비트 멤버의 크기를 원래 타입 크기보다 크게 지정할 경우 오류가 납니다. 예를 들어 int의 원래 크기인 32비보다 크게 지정하면 안 됩니다.. 구조체 구조체를 사용하면 여러 개의 데이터를 한 변수에 넣을 수 있습니다. 형식: struct (구조체 이름) { (변수목록) }; (구조체 이름) (변수 이름);//(구조체 이름)타입의 변수를 생성 +구조체를 만들면서 변수를 초기화하기 struct (구조체 이름) { (변수목록) }(변수 이름); 또는 구조체 이름을 생략하면서 구조체를 만들면서 초기화할 수 있습니다. 이러면 해당 구조체 이름이 없으므로 그 타입의 다른 변수를 정의할 수 없습니다. struct { (변수목록) }(변수 이름); 예제 : struct pack { int num; char ca; }; pack a; struct pack2 { int num; int num2; }b; struct { int num,num2,num3; }c; 구조체 변.. 이전 1 다음