sizeof() is a unary operator which can be used to find the size of any data element. Size of structure is equal to the sum of size of all data members in a structure. Whereas, size of union is equal to the size of largest data member in a union.
Consider the following example,
struct value {
float y;
char ch;
};
union value {
float y;
char ch;
};
Size of struct value is 5 bytes(size of float is 4 byte + size of char is 1 byte)
Size of union value is 4 bytes(y is the largest data member in the union value)
float y;
char ch;
};
union value {
float y;
char ch;
};
Size of struct value is 5 bytes(size of float is 4 byte + size of char is 1 byte)
Size of union value is 4 bytes(y is the largest data member in the union value)
Example C program to illustrate the difference between the size of union and structure:
#include <stdio.h>
struct student {
char name[100];
int age;
float height;
};
union book {
char name[100];
char author[200];
int pages;
float price;
};
int main() {
struct student s1;
union book b1;
printf("Size of int: %d\n", sizeof(int));
printf("Size of float: %d\n", sizeof(float));
printf("Size of double:%d\n", sizeof(double));
printf("Size of char: %d\n", sizeof(char));
printf("Structure size: %d\n", sizeof(s1));
// union size => size of largest data member
printf("Union size: %d\n", sizeof(b1));
return 0;
}
Output:
jp@jp-VirtualBox:~/$ ./a.out
Size of int: 4
Size of float: 4
Size of double:8
Size of char: 1
Structure size: 108
Union size: 200
No comments:
Post a Comment