-  Μπορούμε να δηλώσουμε μια 
δομή (structure) η οποία θα περιέχει στο εσωτερικό
της δεδομένα διαφορετικών τύπων ή σημασίας με τον ορισμό struct.
Η δήλωση της δομής γίνεται σύμφωνα με την παρακάτω σύνταξη:
struct ετικέτα δομής {
	δήλωση μεταβλητής1;
	δήλωση μεταβλητής2;
	...
};
Το παρακάτω παράδειγμα δηλώνει ένα σημείο το οποίο αποτελείται από
δύο ακέραιες τιμές x και y:
struct s_point {
        int x;
        int y;
};
Αντίστοιχα το παρακάτω παράδειγμα δηλώνει μια δομή που περιέχει
τα στοιχεία ενός φοιτητή για ένα μάθημα:
struct s_student {
        char name[50];
        int grade;
};
 -  Μετά τη δήλωση της δομής η δεσμευμένη λέξη struct ακολουθούμενη
από την
ετικέτα δομής (structure tag) αποτελεί
νέο τύπο.
 -  Έχοντας δηλώσει την αντίστοιχη δομή μπορούμε να ορίσουμε μεταβλητές
με βάση τη δομή αυτή.
Το παρακάτω παράδειγμα ορίζει μια μεταβλητή p τύπου struct s_point.
struct s_point p;
 -  Πρόσβαση στα στοιχεία μιας μεταβλητής τύπου struct έχουμε με τη σύνταξη 
μεταβλητή.στοιχείο.
Παράδειγμα:
        printf("p=(%d, %d)\n", p.x, p.y);
 -  Μπορούμε να ορίσουμε μεταβλητές με βάση μια δομή
συνδυάζοντας τη δήλωση της δομής με τον ορισμό των μεταβλητών.
Στην περίπτωση αυτή μπορούμε να παραλείψουμε και το όνομα της ετικέτας.
Παράδειγμα:
struct {
        int x, y;
} p1, p2;
p1.x = 4;
p1.y = 5;
 -  Μπορούμε να αντιγράψουμε τα στοιχεία μιας δομής σε μια άλλη ίδια
με τη χρήση του =.
Παράδειγμα:
struct {
        int x, y;
} p1, p2;
p1.x = 4;
p1.y = 5;
p2 = p1;
 -  Ακόμα, μπορούμε να περάσουμε δομές σαν παραμέτρους σε συναρτήσεις
και να ορίσουμε ότι το αποτέλεσμα μιας συνάρτησης είναι μια δομή.
Παράδειγμα (επιστρέφει ένα σημείο ανάμεσα σε δύο άλλα):
struct s_point {
        int x, y;
};
struct s_point
middle(struct s_point a, struct s_point b)
{
        struct s_point c;
        c.x = (a.x + b.x) / 2;
        c.y = (a.y + b.y) / 2;
        return (c);
}
 -  Μπορούμε να εκχωρήσουμε αρχικές τιμές σε μια ένωση ακολουθώντας
τον ορισμό της από = και τις αντίστοιχες τιμές για τα μέλη της
μέσα σε άγκιστρα.
Παράδειγμα:
struct s_point origin = {0, 0};