Structure is a user-defined datatype in C programming which allows to store different data types e.g. int, float, char, array and pointer etc. together.
Consider an example, we want to store information’s of a Car i.e. Brand, Model, Year and Cost. Brand and Model are of string data types, Year is an int data type and Cost is of float data type.
We know that array in C programming is used to store homogeneous data types. Array can store either int data type or float data type etc. but cannot hold different data types. So, structure comes into the picture to store different data types in C language. Here is how structure looks like.
struct Car{
char brand[32];//char array
char model[32];//char array
int year; //int data type
float cost;//float data type
};
How to create structure in C?
To declare a structure, we use struct keyword to create a structure. Here is the C syntax of structure definition. You can compare it with above Car structure.
struct structure_name{
//variables of different data types
};
How to create / Assign / Access structure variables?
We create structure variable using struct keyword. e.g. struct structure Name var. See below example. Note that in C we must use struct keyword during creating variables of structure. in C++ it is not required.
int main()
{
//Create variables of structure car
struct Car c;
return 0;
}
We can access the structure’s member using dot(.) operator on structure variable declared. e.g. c.brand.
Simple and Complete structure program example in C
First, let’s see the complete C structure program sample using Car structure that is how to create structure, declare structure variable, assign values to them and accessing all those structure variables. Read the code comments.
/* Program example of structure in C*/
#include <stdio.h>
struct Car{
char brand[32];//char array
char model[32];//char array
int year; //int data type
float cost;//float data type
};
int main()
{
//Create variables of structure car
struct Car c;
//Fill structure with car informations
strcpy(c.brand, "Maruti");
strcpy(c.model, "Vitara Brezza");
c.year = 2016;
c.cost = 76000.00;
//Display car information
printf("Car Information:\n");
printf("Brand: %s\n", c.brand);
printf("Model: %s\n", c.model);
printf("Year: %d\n", c.year);
printf("Cost: %f\n", c.cost);
return 0;
}
Output:
Car Information:
Brand: Maruti
Model: Vitara Brezza
Year: 2016
Cost: 76000.00
Structure initialization in C
Structure initialization can also be done at compile time if we want to initialize structures with some default values.
For example,
int main()
{
//Initialize structure with defult values
struct Car c = {"Maruti","Vitara Brezza",2016,76000.00 };
return 0;
}
So, if you don’t assign the values to a variables after initialization, then default value will be taken. for in below example, we have initialize the structure variables, but a later point of time we are changing only model of the car. So as an output default value (Vitara Brezza) of model will be changed to “Swift”.
int main()
{
//Create variables of structure car
struct Car c = {"Maruti","Vitara Brezza",2016,76000.00 };
//only change model of the car
strcpy(c.model, "Swift");
//display car information
printf("Car Information:\n");
printf("Brand: %s\n", c.brand);
printf("Model: %s\n", c.model);
printf("Year: %d\n", c.year);
printf("Cost: %.2f\n", c.cost);
return 0;
}
Here is the output with default values and assigned new value
Output:
Car Information:
Brand: Maruti
Model: Swift
Year: 2016
Cost: 76000.00