Open-Source Internship opportunity by OpenGenus for programmers. Apply now.
Reading time: 20 minutes | coding time: 20 minutes
struct or Structure is a user defined data type which allows you to combine data items of different kinds.
Structures are used to group together different data elements (types of variables) under the same name. These data elements, known as members, can have different types and different lengths.
Declaring a structure
To define a structure,we use the key word struct.
Syntax
struct structure_name {
datatype member_name1;
datatype member_name2;
.
.
datatype member_nameN;
};
Note: the ; after the last curly bracket is compulsary .
Example
struct Student
{
char s_Name[30];
int s_RollNo;
int s_Age;
};
Note: This declaration creates a new type (Student).
Accessing data members of a structure
The data members of a structure can't be accessed directly.They can only be accessed using the variable of a structure using member access operator (.).
The member access operator is used between the structure variable name/ and the structure member that we wish to access.
You can use struct keyword to define variables of structure type but it is optional in C++.
Declaring a structure variable:
1.You can simply declare a structure variable using the key word struct ,structure name and variale name.
Syntax
struct structure_name variable_name;
or
structure_name variable_name;
2.You can declare structure variable at the time of struction declaration.
struct structure_name {
datatype member_name1;
datatype member_name2;
.
.
datatype member_nameN;
} variable_name1,variable_name2,....variable_nameN;
Example
struct Student S1;
or
Student S1;
or
struct Student
{
char s_Name[30];
int s_RollNo;
int s_Age;
} S1,S2;
Size of a structure
When a structure is declared there is no memory space allocated to it.It's just a template.A structure takes up space only when the variable of the structure is declared.
The total size of the structure is the sum of size of the data members in the structure
The size of a structure can be checked as as follows-
struct Student
{
char s_Name[30];
int s_RollNo;
int s_Age;
} S1,S2;
int main()
{ cout<<"Size ="<<sizeof(S1);
return 0;
}
Output
Size=38
Note : The size of struct is 38 btyes(30 for name(30 char)+ 4 for rollno(int)+4 for age(int))
Accessing structure members:
Syntax
variable_name.member_name=value;
or
cin>>variable_name.member_name;
cout<<variable_name.member_name;
Example
struct Student S1;
S1.s_Name = "Jany";
S1.s_RollNo = 10;
cin>>S1.s_Age;
cout << "Name: " << S1.s_Name << '\n';
cout << "Rollno: " << S1.s_RollNo<< '\n';
cout << "Age: " << S1.s_Age; //(let age be 20)
Output:
Name: Jany
Rollno: 10
Age: 20
Pointer to Structure
Like any other type, structures can be pointed to by its own type of pointers.
Syntax
struct structure_name *structure_pointer;
Example
struct Student *S1;
Accessing members through structure pointers
If you have a pointer to a structure and you want to access the members of the structure then you have to use the -> (infix operator/arrow operator) instead of a dot operator.
Syntax
variable_name->member_name=value;
or
cin>>variable_name->member_name;
cout<<variable_name->member_name;
Example
struct Student *S2;
S2->s_Name = "Richard";
S2->s_RollNo = 11;
cin>>S2->s_Age;
cout << "Name: " << S2->s_Name << '\n';
cout << "Rollno: " << S2->s_RollNo<< '\n';
cout << "Age: " << S2->s_Age; //(let age be 21)
Output:
Name: Richard
Rollno: 11
Age: 21