next up previous
Next: Passing Arguments to main() Up: Arrays, Pointers, and structs Previous: Pointers

structs

Structures (or structs) are a very convenient way of collecting disparate data types into a single data element. The following example shows how a struct is defined as a type, how a variable of that type is declared, and how to access data fields in the struct:

    #include <stdio.h>
    #include <assert.h>

    struct dates_s {
        int month;
        int day;
        int year;
    };

    void showdate(struct date_s *date)
    {
        assert(date != NULL);
        (void) printf("Date = %02i/%02i/%4i\n",date->month,date->day,date->year);
    }

    void main(void)
    {
        struct date_s date;

        date.month = 1;
        date.day = 27;
        date.year = 2004;
        showdate(&date);
    }

Note that, unlike for arrays, the name of a structure is not a pointer to the structure. This means you can pass the actual value (contents) of the structure to a function. However, it's generally more efficient to just pass a pointer, as in the example above, to avoid copying data unnecessarily.



Massimo Ricotti 2009-01-26