Overview of Structures in C
What is Structure
A structure is a composite data type that allows you to group together variables of different data types under a single name.
A structure is defined using the
struct
keyword, followed by a user-defined name for the structure, and a list of one or moremember variables
, each of which has its own data type.
Syntax of Structure
The syntax for defining a structure in C is as follows:
struct structure_name {
data_type member1;
data_type member2;
...
data_type memberN;
};
Explanation
The structure_name
is a user-defined name for the structure, and member1
through memberN
are the member variables of the structure. Each member variable is defined with a data type, just like any other variable.
Example of Structure
- The following code defines a simple structure called person that has three member variables: name (a character array), age (an integer), and height (a float).
struct person {
char name[50];
int age;
float height;
};
Once a structure is defined, you can create variables of that structure type, just like you would create variables of any other data type.
You can then access the member variables of the structure using the dot operator
(.)
to separate the structure variable name and the member name.
For example:
The following code creates a variable of the person structure type and initializes its member variables:
struct person john;
strcpy(john.name, "John Smith");
john.age = 35;
john.height = 1.8;
Structure Properties
A structure type in C has the following properties:
Member variables
- A structure is composed of one or more member variables, each of which has its own data type.
- Member variables can be of any C data type, including basic types (such as
int
andfloat
), pointers, arrays, and even other structures.
Memory layout
- The memory layout of a structure is contiguous, which means that all member variables are stored in a single block of memory.
- The size of a structure is determined by the sum of the sizes of its member variables, plus any padding that may be added to align the data on memory boundaries.
Accessing members
You can access the individual member variables of a structure using the dot operator (.)
to separate the structure variable name and the member name.
For example:
If you have a structure called person
with a member variable called name
, you can access the name variable of a structure instance p
like this: p.name
.
Initializing
You can initialize a structure variable at the time it is declared by providing a comma-separated list of values for its member variables in braces.
For example:
To initialize a person structure with a name of "John" and an age of 25, you could write: struct person p = {"John", 25};
Passing as argument
You can pass a structure variable as an argument to a function by value or by reference (using a pointer to the structure).
Returning from function
You can also return a structure from a function, either by value or by reference.
Example of using Stuctures
Here's a basic program using structures in C that creates a person
structure type, initializes a variable of that type, and prints out the member variables of that variable:
#include <stdio.h>
struct person
{
char name[50];
int age;
float height;
};
int main()
{
struct person john = {"John Smith", 35, 1.8};
printf("Name: %s\n", john.name);
printf("Age: %d\n", john.age);
printf("Height: %.2f\n", john.height);
return 0;
}
Output:
Explanation
- We define a
person
structure type with three member variables:name
,age
, andheight
. - We then declare a variable
john
of typeperson
and initialize its member variables using a brace-enclosed list. - Finally, we print out the values of
john's
member variables usingprintf()
statements.