복합 데이터 유형

Composite data type

컴퓨터 과학에서 복합 데이터 유형 또는 복합 데이터 유형은 프로그래밍 언어원시 데이터 유형 및 기타 복합 유형을 사용하여 프로그램에서 구성할 수 있는 모든 데이터 유형입니다.구조체 또는 집약 데이터 [1]유형이라고도 불리지만, 후자는 어레이, 목록 등을 가리킬 수도 있습니다.복합 활자를 구성하는 행위를 구성이라고 합니다.복합 데이터 유형은 종종 스칼라 변수와 대조됩니다.

C/C++ 구조 및 클래스

A struct는 C와 C++의 복합형 개념으로 라벨이 붙은 필드 또는 멤버의 고정 세트를 구성하는 데이터형입니다.그래서 그렇게 불리게 된 것입니다.struct선언에 사용되는 키워드입니다.이것은 구조, 보다 정확하게는 사용자 정의 데이터 구조[citation needed]줄임말입니다.

C++에서는 A와 B의 유일한 차이점입니다.struct클래스디폴트액세스 레벨로, 클래스에는 프라이빗 액세스레벨, 클래스에는 퍼블릭 액세스레벨로structs.

주의: 수업과class 키워드는 C++에서 완전히 새로운 것이었고, C 프로그래밍 언어는 이미 raw 타입의structs. 모든 면에서 C++structs는 C의 슈퍼셋을 형성한다.structs: 거의 모든 유효 Cstruct는 유효한 C++ 입니다.struct는 같은 의미론입니다.

선언.

A struct선언은 필드 목록으로 구성됩니다.각 필드에는 임의의 유형을 지정할 수 있습니다.에 필요한 총 스토리지structobject는 모든 필드의 스토리지 요건과 내부 패딩의 합계입니다.

예를 들어 다음과 같습니다.

구조 계좌 {    인트 account_number(계정번호);     *이름;     *성_이름;    흘러가다 균형.; }; 

라고 하는 타입을 정의합니다.struct Account이 유형의 새 변수를 만들려면 다음과 같이 쓸 수 있습니다.struct Account myAccount;정수 컴포넌트를 가지며 액세스 할 수 있습니다.myAccount.account_number및 부동소수점 컴포넌트(접근처)myAccount.balance, 및first_name그리고.last_name구성 요소들.구조myAccount에는 4개의 값이 모두 포함되어 있으며, 4개의 필드는 모두 개별적으로 변경할 수 있습니다.

글쓴이 이후struct Account코드 내에서 반복적으로 번거로워지는 것은 드물지 않습니다.typedefC 코드의 스테이트먼트는, 보다 편리한 동의어를 제공합니다.struct그러나 일부 프로그래밍 스타일 가이드에서는 이 타입이 난독화될 수 있다며 이에 반대하도록 조언하고 있습니다[who?].

예를 들어 다음과 같습니다.

유형화된 구조 계정_ {    인트    account_number(계정번호);       *이름;       *성_이름;    흘러가다  균형.; } 계좌; 

C++ 코드에서는 타입이 정의되어 있기 때문에는 필요 없습니다.struct이미 일반 네임스페이스의 일부이므로 유형은 다음 중 하나로 참조할 수 있습니다.struct Account또는 간단히 말하면Account.

또 다른 예로 부동소수점 데이터 유형을 사용하는 3차원 벡터 복합 유형을 다음과 같이 작성할 수 있습니다.

구조 벡터 {   흘러가다 x;   흘러가다 y;   흘러가다 z; }; 

이름이 붙은 변수velocity와 함께Vector복합 유형은 다음과 같이 선언됩니다.Vector velocity;의 멤버velocity도트 표기를 사용하여 액세스합니다.예를들면,velocity.x = 5;를 설정합니다.x구성 요소velocity5와 같습니다.

마찬가지로, 다음과 같은 방법으로 색상 구조를 작성할 수 있습니다.

구조 색. {   서명되어 있지 않다 인트 빨간.;   서명되어 있지 않다 인트 초록의;   서명되어 있지 않다 인트 파랑색; }; 

3D 그래픽에서는 일반적으로 각 정점의 위치와 색상을 모두 추적해야 합니다.이를 위한 한 가지 방법은 다음과 같습니다.Vertex복합 유형, 이전에 만든 사용Vector그리고.Color복합 유형:

구조 꼭지점 {   벡터 위치;   색. 색.; }; 

인스턴스화

유형 변수 생성struct Vertex이전과 동일한 형식을 사용합니다.Vertex v;

멤버 액세스

컴포넌트에 값 할당v다음과 같이 합니다.

v.위치.x = 0.0; v.위치.y = 1.5; v.위치.z = 0.0; v.색..빨간. = 128; v.색..초록의 = 0; v.색..파랑색 = 255; 

원시 서브타입

의 주요 용도struct 는 복잡한 데이터 타입의 구축을 위한 것이지만, 때로는 원시 구조 서브타이핑을 생성하는 데 사용됩니다.를 들어, 표준[citation needed] C에서는 두 구조체의 초기 필드가 동일한 경우 이들 필드는 동일한 방법으로 표현되어야 합니다.

구조 ifoo_old_module {     x, y; }; 구조 ifoo_version_42 {     x, y, z;     *이름.;     a, b, c; }; 무효 조작_on_ifoo(구조 ifoo_old_module *); 구조 ifoo_version_42 s; . . . 조작_on_ifoo(&s); 

올바르게 동작합니다.

서명의 종류

유형 시그니처(또는 함수 유형)는 원시 및 복합 유형으로 구성되며 복합 유형을 구성할 때 유형 자체로도 사용할 수 있습니다.

유형화된 구조 {     인트 x;     인트 y; } 포인트;  유형화된 이중으로 하다 (*미터법) (포인트 p1, 포인트 p2);  유형화된 구조 {     포인트 센터;     이중으로 하다 반지름;     미터법 미터법; } 원형; 

「 」를 참조해 주세요.

레퍼런스

  1. ^ Howe, Denis. "The Free On-line Dictionary of Computing". Dictionary.com. Retrieved 1 February 2016.