728x90
반응형

struct 2

[C++] 구조체 이름

형식의 이름은 선언이 완성된 직후가 아니라 발견된 직후에 사용할 수 있게 된다. struct Link { Link∗ previous; Link∗ successor; }; 그러나 선언이 완성될 때까지 구조체는 새 객체를 선언할 수 없다. struct No_good { No_good member; // error : recursive definition }; 컴파일러가 No_good의 크기를 결정할 수 없기 때문에 이것은 오류다. 두 개(혹은 그 이상)의 구조체가 서로 참조할 수 있도록 하려면 이름을 구조체의 이름으로 선언할 수 없다. struct List; // struct name declaration: List to be defined later struct Link { Link∗ pre; Link∗ ..

[C++] 구조체 layout

구조체의 객체는 선언된 순서대로 멤버를 보유한다. 예를 들면 다음과 같다. struct Readout { char hour; // [0:23] int value; char seq; // sequence mark ['a':'z'] }; 다음과 같이 메모리에 배치된 Readout 객체의 멤버를 상상할 수 있다. 멤버는 선언 순서대로 메모리에 할당되므로 시간의 주소는 값의 주소보다 작아야 한다. 그러나 구조체의 객체 크기가 반드시 해당 멤버 크기의 합일 필요는 없다. 이는 많은 machine이 특정 유형의 객체가 아키텍처의 종속 경계에 할당되거나 그러한 객체가 있는 경우 훨씬 더 효율적으로 처리해야 하기 때문이다. 예를 들면 정수는 종종 단어 word의 경계에 할당된다. 이러한 machine에서 객체는 적절하..

728x90
반응형