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