Ενώσεις (Unions)

Στη C, η ένωση (union) είναι ένας τύπος δεδομένων ίδιος με την δομή (struct). Η μόνη διαφορά είναι ότι χρησιμοποιεί την ίδια μνήμη για να αποθηκεύει τις τιμές των μεταβλητών της.

Στο παρακάτω παράδειγμα παρουσιάζεται ο τρόπος λειτουργίας μιας ένωσης.

Παράδειγμα

#include <stdio.h>

	/* Δήλωση union με το όνομα Data */
	union Data {
		int i;
		int f;
	};

	int main( ) {

		/* Δήλωση μεταβλητής τύπου union Data με το όνομα data */
		union Data data;        

		/* καταχώρηση τιμής στην μεταβλητή-μέλος i και εκτύπωση */
		data.i = 100;
		printf( "data.i : %d\n", data.i);

		/* καταχώρηση τιμής στην μεταβλητή-μέλος f και εκτύπωση
			εδώ η f "γράφει" επάνω στη μνήμη της i
		 */
		data.f = 200;
		printf( "data.f : %d\n", data.f);

		/* Αν ξαναεκτυπώσουμε την i θα δούμε ότι έχει αντικατασταθεί από την τιμή της f */
		printf( "data.i : %d\n", data.i);
		
		return 0;
	}