공용체
자료형 모음 하나에 대한, 각기 다른 해석이 가능한 자료형
융통성이 좋음, 즉 생각을 많이 해야함.
구조는 모든 멤버에 대해 서로 다른 메모리 위치를 할당 함.
union은 모든 메모에 대해 고통 메모리 위치 할당.
union union-name
{
datatype var1;
datatype var2;
- - - - - - - - - -
- - - - - - - - - -
datatype varN;
};
멤버 저근 객체 생성 구문
union union-name obj;
객체 생성 및 공영체 멤버 접근 예
vi objet_union_acess.c
#include<stdio.h>
union Employee
{
int Id;
char Name[25];
int Age;
long Salary;
};
void main()
{
union Employee E;
printf("\nEnter Employee Id : ");
scanf("%d",&E.Id);
printf("\nEnter Employee Name : ");
scanf("%s",&E.Name);
printf("\nEnter Employee Age : ");
scanf("%d",&E.Age);
printf("\nEnter Employee Salary : ");
scanf("%ld",&E.Salary);
printf("\n\nEmployee Id : %d",E.Id);
printf("\nEmployee Name : %s",E.Name);
printf("\nEmployee Age : %d",E.Age);
printf("\nEmployee Salary : %ld",E.Salary);
}
Output :
Enter Employee Id : 1
Enter Employee Name : Kumar
Enter Employee Age : 29
Enter Employee Salary : 45000
Employee Id : -20536
Employee Name : ?$?$ ?
Employee Age : -20536
Employee Salary : 45000
멤버 손상 값 확인.
변수 사용 예제.
vi variab_union.c
#include<stdio.h>
union Employee
{
int Id;
char Name[25];
int Age;
long Salary;
};
void main()
{
union Employee E;
printf("\nEnter Employee Id : ");
scanf("%d",&E.Id);
printf("Employee Id : %d",E.Id);
printf("\n\nEnter Employee Name : ");
scanf("%s",&E.Name);
printf("Employee Name : %s",E.Name);
printf("\n\nEnter Employee Age : ");
scanf("%d",&E.Age);
printf("Employee Age : %d",E.Age);
printf("\n\nEnter Employee Salary : ");
scanf("%ld",&E.Salary);
printf("Employee Salary : %ld",E.Salary);
}
Output :
Enter Employee Id : 1
Employee Id : 1
Enter Employee Name : Kumar
Employee Name : Kumar
Enter Employee Age : 29
Employee Age : 29
Enter Employee Salary : 45000
Employee Salary : 45000
각 멤버가 한 번에 사용되기 때문에 모든 멤버에 대한 내용이 출력된다.
공용체 크기 비교
vi union_cmp.c
#include<stdio.h>
struct Employee1
{
int Id;
char Name[25];
long Salary;
};
union Employee2
{
int Id;
char Name[25];
long Salary;
};
void main()
{
printf("\nSize of Employee1 is : %d",sizeof(Employee1));
printf("\nSize of Employee2 is : %d",sizeof(Employee2));
}
Output :
Size of Employee1 is : 31
댓글 없음:
댓글 쓰기