구조와 유니언의 차이점 차이점

Anonim

구조체 및 공용체는 C 언어로 된 사용자 정의 데이터 형식이며 개념적으로 동일하지만 메모리가 구성원에게 할당되는 방식과는 몇 가지면에서 여전히 다릅니다. 그들은 비슷하게 선언되지만 그들은 다르게 기능합니다. 그들은 사용자가 하나의 이름으로 다른 데이터 유형을 결합 할 수 있습니다. 구조체 변수를 선언 할 때 각 멤버마다 별도의 메모리 위치가 사용되지만 유니온 변수의 다른 멤버는 동일한 메모리 위치를 공유합니다. 구조와 노동 조합의 차이를 연구 해 봅시다.

구조 란 무엇입니까?

구조체는 사용자가 여러 종류의 데이터 유형을 메모리 블록의 단일 유형으로 결합 할 수있게하는 C의 또 다른 사용자 정의 데이터 유형입니다. 구조체에는 서로 관련이있는 단순한 데이터 유형과 복잡한 데이터 유형이 모두 포함될 수 있습니다. 그렇지 않으면 의미가 없습니다. 구조 내의 각 멤버는 언제든지 액세스하고 검색 할 수 있도록 자체 메모리 위치를 가져옵니다.

- 하나의 연락처에 대한 모든 정보 (이름, 주소, 주소 등)를 저장하는 책이나 주소록의 많은 구성원에 대한 정보를 저장하는 디렉토리와 같이 많은 데이터가 그룹화되어야하는 경우 구조가 사용됩니다. 연락처 번호 등. 각 구성원의 주소는 오름차순으로 표시되며 이는 각 구성원의 메모리가 서로 다른 오프셋 값에서 시작 함을 의미합니다. 한 회원의 가치를 변경하는 것은 다른 회원에게 아무런 영향을 미치지 않습니다.

'struct'키워드는 단일 이름으로 다른 데이터 유형의 구조를 정의하는 데 사용됩니다. 예를 들어 직원 데이터베이스를 만들려면 직원의 이름, 연령, 전화 번호 및 급여 세부 정보를 단일 항목 아래에 저장해야합니다. 이것은 키워드 'struct'에 의해 이루어지며, 구조체가 선언되었음을 컴파일러에 알려줍니다.

구조체 employee {

문자열 이름;

문자열 연령;

문자열 전화;

문자열 급여;

} emp1, emp2;

여기서 'employee'는 구조체의 이름이고 'emp1'과 'emp2'변수는 'employee'유형으로 생성됩니다. 닫는 중괄호 뒤에는 세미콜론 (;)이 와야합니다.

구조체의 멤버는 두 가지 유형의 연산자로 액세스 할 수 있습니다.

멤버 연산자

  1. 구조체 포인터 연산자
  2. Union이란?

C에서 사용되는 특수 데이터 유형으로 사용자가 여러 종류의 데이터 유형을 동일한 메모리 위치에 저장할 수 있습니다. 유니온은 구조체와 매우 유사하며 'struct'키워드를 'union'키워드로 대체하여 정의 할 수 있습니다. 회원들은 노동 조합에서 서로의 기억을 덮어 씌우며, 모든 구성원에게 적합 할만큼 충분히 큽니다.

변수가 공용체와 연관 될 때 컴파일러는 가장 큰 메모리의 크기를 고려하여 메모리를 할당하므로 공용체의 크기는 가장 큰 데이터 멤버의 크기와 같습니다.유니온은 많은 멤버들로 정의 될 수 있지만 주어진 시간 인스턴스에서 하나의 멤버 만이 값을 포함합니다.

주소는 모든 회원이 동일한 오프셋 값에서 시작한다는 것을 의미하는 모든 조합원에게 동일합니다. 그리고 한 회원의 가치를 변경하면 다른 회원의 가치에 영향을 미칩니다. union은 여러 데이터 유형 중 하나를 저장하고자 할 때 사용할 수 있습니다.

노동 조합원 {

char name [32];

연령;

부유 급여;

};

여기서 키워드 'union'은 구조체의 선언과 매우 유사한 결합을 정의합니다. 변수는 '직원의 이름'인 문자열 값, '직원의 나이'인 정수 값 또는 '직원의 급여'를 나타내는 부동 소수점 값을 저장할 수 있습니다.

구조와 연합의 차이

1. 키워드

'struct'키워드는 구조체를 정의하는 데 사용되는 반면 'union'키워드는 공용체를 정의하는 데 사용됩니다. 2. 메모리 할당

구조체 내의 멤버에 대해 별도의 메모리 공간이 할당되고 멤버는 메모리를 공유하지 않는 다른 주소를가집니다. 한편, 공용체는 모든 구성원에 대해 동일한 메모리 공간을 공유하므로 공유 메모리 위치가 할당됩니다. 3. Member Access

한 번에 하나의 멤버 만 액세스 할 수 있도록 모든 멤버가 한 번에 하나의 값을 저장합니다. 구조체에 여러 값을 저장할 수 있기 때문에 언제든지 모든 멤버 값에 액세스하고 검색 할 수 있습니다. 4. Size

구조체의 크기는 모든 멤버의 크기의 합보다 크지 만 유니온의 크기는 가장 큰 크기 멤버의 크기와 같습니다. 5. 초기화 (Initialization) 구조에서는 여러 멤버를 동시에 초기화 할 수 있지만, 유니온에서는 첫 번째 멤버 만 해당 유형의 값으로 초기화 할 수 있습니다. 5. 값

구조체는 모든 멤버의 다른 값을 저장할 수 있으며 한 멤버의 값 변경은 다른 멤버의 값에 영향을주지 않습니다. 노조는 모든 구성원에게 동일한 가치를 저장하고 한 구성원의 가치 변화는 다른 구성원의 가치에 영향을 미칩니다.

구조 대 연합

구조

조합

구조 키워드는 구조를 정의하는 데 사용됩니다.

유니온 키워드는 유니온을 정의하는 데 사용됩니다.

멤버는 구조체에서 메모리를 공유하지 않습니다.

멤버는 유니언의 메모리 공간을 공유합니다.

구조체에서 언제든지 모든 멤버를 검색 할 수 있습니다.

노동 조합에서 한 번에 한 명의 회원 만 액세스 할 수 있습니다. 구조체의 여러 멤버를 한 번에 초기화 할 수 있습니다.
첫 번째 멤버 만 초기화 할 수 있습니다. 구조체의 크기는 각 멤버의 크기의 합과 같습니다.
공용체의 크기는 가장 큰 구성원의 크기와 같습니다. 한 회원의 가치를 변경해도 다른 회원의 가치에는 영향을 미치지 않습니다.
한 구성원의 값 변경은 다른 구성원 값에 영향을줍니다. 모든 구성원에 대해 다른 값을 저장합니다.
모든 구성원에 대해 동일한 값을 저장합니다. 요약 구조체와 공용체 모두 C에서 사용자 정의 된 데이터 형식으로 기능적으로 개념적으로 동일하지만 어떤면에서는 상당히 다릅니다.둘 다 서로 다른 데이터 유형의 변수를 포함하지만 변수 선언과 멤버 액세스에 동일한 구문을 사용합니다. 구조체가 'struct'키워드에 의해 정의되는 반면, 공용체는 키워드 'union'에 의해 정의됩니다.
구조체에서 각 멤버는 별도의 메모리 위치를 얻는 반면, 유니온에서는 전체 메모리 공간이 가장 큰 크기 멤버와 같습니다. 모든 멤버가 동일한 메모리 공간을 공유합니다. 어떤 순서로든 어떤 멤버라도 구조체에서 접근 할 수있는 반면, 유니온에서는 그 값만 최근에 저장된 값에 접근 할 수 있습니다.