728x90
반응형

structure 4

[C++] 구조체의 필드(field)

이진 변수를 나타내기 위해 전체 byte(char or bool)를 사용하는 것은 고급스러워 보이지만 char는 C++에서 독립적으로 할당되고 주소 지정될 수 있는 가장 작은 객체다. 그러나 구조체의 필드와 같이 여러 개의 작은 변수를 함께 묶는 것이 가능하다. 필드는 종종 bit 필드라고 한다. 구성원은 점유할 비트 수를 지정하여 필드로 정의된다. 이름 없는 필드가 허용된다. 그것들은 명명된 필드의 의미에 영향을 미치지 않지만 일부 machine-dependent 한 방식으로 레이아웃을 개선하는 데 사용할 수 있다. struct PPN { // R6000 Physical Page Number unsigned int PFN : 22; // Page Frame Number int : 3; // unused..

[C++] 구조체의 POD(plain old data)

때때로 객체를 단순하게 "plain old data" (메모리의 연속 byte sequence)로 취급하고 런타임 다형과 같은 고급 개념에 대해 걱정하지 않으려고 한다. 종종 그렇게 하는 이유는 하드웨어가 할 수 있는 가장 효율적인 객체 이동의 방법이기 때문이다. 예를 들어 복사 생성자의 100번 호출을 사용하여 100개의 요소 배열을 복사하는 것은 일반적으로 단순 블록 이동 명령을 사용하는 std::memcpy()를 호출하는 것만큼 빠르지 않을 것이다. 생성자가 inline 된 경우에도 optimizer가 최적화를 발견하기 어려울 수 있다. 이러한 "trick"은 드문 일이 아니며 vector와 같은 컨테이너 구현 및 저수준 I/O 루틴에서 중요하다. 그것들은 불필요하며 상위 레벨 코드에서는 피해야 한..

[C++] 구조체와 배열

당연하게도 배열을 포함하는 구조체와 구체의 배열을 사용할 수 있다. struct Point { int x,y }; Point points[3] {{1,2},{3,4},{5,6}}; int x2 = points[2].x; struct Array { Point elem[3]; }; Array points2 {{1,2},{3,4},{5,6}}; int y2 = points2.elem[2].y; 구조체에 built-in 된 배열은 해당 객체로 취급할 수 있다. 초기화(인수 전달 및 함수 반환 포함) 및 할당에서 배열을 포함하는 구조체를 복사할 수 있다. Array shift(Array a, Point p) { for (int i=0; i!=3; ++i) { a.elem[i].x += p.x; a.elem[i]...

[C++] 구조체 (structure)

배열은 동일한 유형의 요소 집합이다. 가장 단순한 형태의 구조체는 임의 유형의 요소 집합이다. struct Address { const char∗ name; // "Jim Dandy" int number; // 61 const char∗ street; // "South St" const char∗ town; // "New Providence" char state[2]; // 'N' 'J' const char∗ zip; // "07974" }; 이것은 미국 내 누군가에게 메일을 보내기 위해 필요한 항목으로 구성된 Address라는 유형을 정의한다. 종료를 위한 세미콜론(;)을 잊지 말자. Address 유형의 변수는 다른 변수와 똑같이 선언할 수 있으며 개별 멤버는 점(.) 연산자를 사용하여 접근할 수 있..

728x90
반응형