C의 구조와 결합의 차이점
구조란 무엇입니까?
구조는 C 프로그래밍 언어에서 사용자가 정의한 데이터 유형으로, 서로 다른 데이터 유형의 논리적으로 관련된 데이터 항목을 결합합니다.
모든 구조 요소는 인접한 메모리 위치에 저장됩니다. 구조 유형 변수는 하나의 이름으로 다양한 데이터 유형의 두 개 이상의 데이터 항목을 저장할 수 있습니다.
유니온이란 무엇입니까?
Union은 구조체와 마찬가지로 사용자 정의 데이터 유형입니다. Union은 다양한 유형과 크기의 개체를 결합합니다. 공용체 변수는 공용체의 가장 큰 변수를 보유하는 공간과 동일한 메모리 공간을 할당합니다. 다양한 유형의 객체가 동일한 위치를 공유할 수 있습니다.
선언 구조의 구문
struct [name of the structure] { type member1; type member2; type member3; };
구조체는 "struct" 키워드와 구조체 이름을 사용하여 선언됩니다. 1번, 2번, 3번은 구조의 개별 구성원입니다. 본문 부분은 세미콜론(;)으로 끝납니다.
C 프로그래밍의 구조 예
#include <stdio.h> struct student { char name[60]; int roll_no; float marks; } sdt; int main() { printf("Enter the following information:\n"); printf("Enter student name: "); fgets(sdt.name, sizeof(sdt.name), stdin); printf("Enter student roll number: "); scanf("%d", & sdt. roll_no); printf("Enter students marks: "); scanf("%f", & sdt.marks); printf("The information you have entered is: \n"); printf("Student name: "); printf("%s", sdt.name); printf("Student roll number: %d\n", sdt. roll_no); printf("Student marks: %.1f\n", sdt.marks); return 0; }
위 프로그램에서는 Student라는 구조체가 생성됩니다. 이 구조에는 1) name(문자열), 2)roll_no(정수), 3)marks(float)의 세 가지 데이터 멤버가 있습니다.
이후 학생 정보를 저장하고 컴퓨터 화면에 표시하기 위한 구조 변수 sdt가 생성됩니다.
출력:
다음 정보를 입력하십시오 :
학생 이름 입력: James
학생번호 입력: 21
학생 성적 입력: 67
귀하가 입력한 정보는 다음과 같습니다.
학생 이름: John
학생 명부 번호: 21
학생 성적: 67.0
Union 선언 구문
union [name of union] { type member1; type member2; type member3; };
Union은 “union” 키워드와 Union 이름을 사용하여 선언됩니다. 1번, 2번, 3번은 개인 노조원입니다. 본문 부분은 세미콜론(;)으로 끝납니다.
C 프로그래밍의 Union 예
#include <stdio.h> union item { int x; float y; char ch; }; int main( ) { union item it; it.x = 12; it.y = 20.2; it.ch = 'a'; printf("%d\n", it.x); printf("%f\n", it.y); printf("%c\n", it.ch); return 0; }
출력:
1101109601
20.199892
a
위 프로그램에서 x와 y의 값이 손상되는 것을 볼 수 있습니다. 변수 ch만 예상 결과를 인쇄합니다. Union에서는 모든 멤버 데이터 유형이 메모리 위치를 공유하기 때문입니다.
따라서 현재 값이 저장된 유일한 데이터 멤버가 메모리 공간을 차지합니다. 변수 ch의 값은 마지막에 저장되었으므로 나머지 값은 변수 길을 잃었다.
구조 대. 노동 조합
구조와 결합의 중요한 차이점은 다음과 같습니다.
Structure | 노동 조합 |
---|---|
struct 키워드를 사용하여 구조를 정의할 수 있습니다. | Union 키워드를 사용하여 Union을 정의할 수 있습니다. |
구조 내의 모든 멤버에는 고유한 메모리 위치가 할당됩니다. | Union에서는 모든 데이터 멤버가 메모리 위치를 공유합니다. |
한 데이터 멤버의 값을 변경해도 구조의 다른 데이터 멤버에는 영향을 미치지 않습니다. | 한 데이터 멤버의 값을 변경하면 Union에 있는 다른 데이터 멤버의 값도 변경됩니다. |
여러 멤버를 한 번에 초기화할 수 있습니다. | Union의 첫 번째 멤버만 초기화할 수 있습니다. |
구조체의 전체 크기는 모든 데이터 멤버 크기의 합입니다. | 공용체의 전체 크기는 가장 큰 데이터 멤버의 크기입니다. |
주로 다양한 데이터 유형을 저장하는 데 사용됩니다. | 주로 사용 가능한 많은 데이터 유형 중 하나를 저장하는 데 사용됩니다. |
내부 매개변수에 적힌 멤버 각각의 공간을 차지합니다. | 내부 매개변수에 적힌 가장 큰 크기의 멤버를 위한 공간을 차지합니다. |
한 번에 모든 구성원을 검색할 수 있습니다. | Union에서는 한 번에 한 명의 회원에 액세스할 수 있습니다. |
유연한 배열을 지원합니다. | 유연한 배열을 지원하지 않습니다. |
구조의 장점
구조 사용의 장점/이점은 다음과 같습니다.
- 구조는 동일한 주제에 대한 두 개 이상의 데이터를 동일한 장소에 수집합니다.
- 이름, 성 등 유사한 데이터 유형과 매개변수의 데이터를 수집하려는 경우에 유용합니다.
- 단일 이름을 사용하여 전체 레코드를 나타낼 수 있으므로 유지 관리가 매우 쉽습니다.
- 구조적으로 단일 매개변수를 사용하여 완전한 레코드 세트를 모든 함수에 전달할 수 있습니다.
- 구조 배열을 사용하여 유사한 유형의 더 많은 레코드를 저장할 수 있습니다.
연합의 장점
Union 사용의 장점/이점은 다음과 같습니다.
- 구조에 비해 메모리를 적게 차지합니다.
- Union을 사용하면 마지막 변수에만 직접 접근이 가능합니다.
- Union은 둘 이상의 데이터 멤버에 대해 동일한 메모리 위치를 사용해야 할 때 사용됩니다.
- 이를 통해 하나의 데이터 멤버의 데이터만 보유할 수 있습니다.
- 할당된 공간은 데이터 멤버의 최대 크기와 같습니다.
구조의 단점
구조 사용에 대한 단점/단점은 다음과 같습니다.
- IT 프로젝트의 복잡성이 한계를 넘어서면 관리하기 어려워집니다.
- 코드에서 하나의 데이터 구조를 변경하면 다른 여러 위치에서도 변경이 필요합니다. 따라서 변경 내용을 추적하기가 어려워집니다.
- 모든 데이터에 대한 저장 공간이 필요하기 때문에 구조가 더 느립니다.
- 구조에서는 한 번에 모든 멤버를 검색할 수 있지만 Union에서는 한 번에 하나의 멤버에 액세스할 수 있습니다.
- 구조체는 내부 매개변수에 쓰여진 멤버 각각의 공간을 차지하고, 유니온은 내부 매개변수에 쓰여진 가장 큰 크기의 멤버를 위한 공간을 차지합니다.
- 구조는 유연한 배열을 지원합니다. Union은 유연한 배열을 지원하지 않습니다.
연합의 단점
다음은 Union 사용의 단점/단점입니다.
- 한 번에 한 명의 조합원만 사용할 수 있습니다.
- 모든 통합 변수는 초기화되거나 한 번에 다양한 값으로 사용될 수 없습니다.
- Union은 모든 회원에게 하나의 공통 저장 공간을 할당합니다.
주요 차이점:
- 구조 내의 모든 멤버에는 고유한 메모리 위치가 할당되는 반면 유니온에서는 메모리 위치가 모든 데이터 멤버에 의해 공유됩니다.
- 한 데이터 멤버의 값을 변경하면 구조의 다른 데이터 멤버에 영향을 주지 않지만, 한 데이터 멤버의 값을 변경하면 공용체에 있는 다른 데이터 멤버의 값이 변경됩니다.
- 구조는 주로 다양한 데이터 유형을 저장하는 데 사용되는 반면, 공용체는 주로 여러 데이터 유형 중 하나를 저장하는 데 사용됩니다.
- 구조에서는 한 번에 모든 멤버를 검색할 수 있는 반면, Union에서는 한 번에 한 멤버에 액세스할 수 있습니다.
- 구조체는 유연한 배열을 지원하지만 공용체는 유연한 배열을 지원하지 않습니다.
초보자를 위한 C 튜토리얼도 확인하세요:- Click Here