Having defined the structure, you can declare an instance of it and assign values to the members using the dot notation. The following example illustrates the use of the month structure.
#include <stdio.h>
#include <string.h>
struct month
{
char name[10];
char abbreviation[4];
int days;
};
int main()
{
struct month m;
strcpy(m.name, "January");
strcpy(m.abbreviation, "Jan");
m.days = 31;
printf("%s is abbreviated as %s and has %d days\n", m.name, m.abbreviation, m.days);
return 0;
}
The output of the program will be as follows:
January is abbreviated as Jan and has 31 days |
All ANSI C compilers allow you to assign one structure to another, performing a member-wise copy. If we had month structures called m1 and m2, then we could assign the values from m1 to m2 with the following:
- Structure with Pointer Members.
- Structure Initializes.
- Passing a Structure to a Function.
- Pointers and Structures.
Structures with Pointer Members in C
Holding strings in a fixed size array is inefficient use of memory. A more efficient approach would be to use pointers. Pointers are used in structures in exactly the same way they are used in normal pointer definitions. Let us see an example:
#include <string.h>
#include <malloc.h>
struct month
{
char *name;
char *abbreviation;
int days;
};
int main()
{
struct month m;
m.name = (char *)malloc((strlen("January")+1) *
sizeof(char));
strcpy(m.name, "January");
m.abbreviation = (char *)malloc((strlen("Jan")+1) *
sizeof(char));
strcpy(m.abbreviation, "Jan");
m.days = 31;
printf("%s is abbreviated as %s and has %d days\n",
m.name, m.abbreviation, m.days);
return 0;
}
The output of the program will be as follows:
January is abbreviated as Jan and has 31 days |
|