Structures in C++
In this lesson: Group related data with struct in C++ — members, arrays of structs, functions — with output. In Hindi & English.
What is a structure?
A structure groups related pieces of data — of possibly different types — under one name. Instead of separate variables for a student's name, roll number and marks, you bundle them into one Student value.
Defining a struct
struct Student {
string name;
int roll;
double marks;
}; // note the semicolonThis defines a new type called Student. The members are the variables inside it.
Creating and accessing
Create a variable of the struct type and reach its members with the dot operator:
#include <iostream>
using namespace std;
struct Student { string name; int roll; double marks; };
int main() {
Student s;
s.name = "Amit";
s.roll = 12;
s.marks = 88.5;
cout << s.name << " (" << s.roll << "): " << s.marks << "\n";
return 0;
}Amit (12): 88.5
You can also initialise at once: Student s = {"Amit", 12, 88.5};. With a pointer, use the arrow: p->name.
Array of structs
Storing many records is easy — make an array of the struct:
Student list[2] = {{"Amit", 1, 90}, {"Riya", 2, 95}};
for (int i = 0; i < 2; i++)
cout << list[i].name << " " << list[i].marks << "\n";| Step | i ki value | Condition | Kya hua | i ab |
|---|---|---|---|---|
| 1 | 0 | 0 < 2 → true | loop body chalta hai | i → 1 |
| 2 | 1 | 1 < 2 → true | loop body chalta hai | i → 2 |
| 3 | 2 | 2 < 2 → false | Condition false — loop yahin ruk gaya (STOP) | — |
Amit 90
Riya 95
Structs with functions
Pass a struct to a function — by const reference to avoid copying large ones:
void printStudent(const Student &s) {
cout << s.name << ": " << s.marks << "\n";
}struct vs class
| struct | class | |
|---|---|---|
| Default access | public | private |
| Typical use | Plain data | Data + behaviour |
| Can have methods? | Yes | Yes |
The only language difference is default access. See classes and objects to go further with behaviour and encapsulation.
Common mistakes
- Forgetting the semicolon after the closing brace of a struct.
- Using
.on a pointer instead of->. - Copying large structs by value when a
constreference is better. - Expecting struct members to be private — they are public by default.
Define a Book struct with title, author and price. Make an array of three books, read them in, and print the most expensive one.
Summary
- A struct groups related data of different types under one name.
- Access members with the dot operator (or
->via a pointer). - Arrays of structs store many records of the same shape.
- Pass structs by
constreference to functions to avoid copies. - struct and class differ only in default access (public vs private).
Frequently Asked Questions
What is a structure in C++?
struct, groups related variables of different types under one name. For example a Student struct can hold a name, roll number and marks together, so you can treat one student as a single value instead of separate variables.How do you access members of a struct in C++?
s.name or s.marks. If you have a pointer to a struct, you use the arrow operator instead, like p->name, which is shorthand for (*p).name.What is the difference between struct and class in C++?
Can a struct have functions in C++?
How do you make an array of structures in C++?
Student list[3];, and then access each element and its members together, like list[0].name. This is handy for storing many records of the same shape, such as a list of students.