Introduction to Structures in C/C++
In procedural and object-oriented programming alike, there’s often a need to group different types of variables under a single name. This is where Structures in C/C++ come in.
Introduced as a way to handle complex data, structures form the foundation for advanced programming concepts like classes and objects in C++. This detailed blog from Kamlesh Singad at Code With Kamlesh dives deep into the definition, usage, and practical implementation of structures.
Importance of Structures in Programming
Think of a student record. It includes:
- Roll number (int)
- Name (string)
- Marks (float)
Instead of declaring separate variables for each student, you can group them into one logical unit: a structure.
Benefits include:
- Code readability
- Data organization
- Ease of maintenance
Also Read: Pointer Arithmetic & Pointer Arrays in C/C++

Declaring a Structure in C
struct Student {
int roll;
char name[50];
float marks;
};
Here, Student
is a user-defined data type.
Initializing Structure Variables
struct Student s1 = {1, "Amit", 92.5};
You can also assign values member-by-member:
s1.roll = 2;
strcpy(s1.name, "Neha");
s1.marks = 88.75;
Structure Syntax in C++
C++ maintains backward compatibility with C:
struct Book {
string title;
int pages;
};
Additionally, C++ allows functions inside structs, and access specifiers like public
, private
.
Also Read: Pointers in C/C++: Basics and Advanced Concepts – Complete Guide

Nesting Structures
Structures can contain other structures:
struct Date {
int day, month, year;
};
struct Student {
int roll;
struct Date dob;
};
Array of Structures
struct Student students[3];
Useful when handling multiple records.
Accessing Members
Use the dot operator:
printf("%s", s1.name);
For pointers:
struct Student *ptr = &s1;
printf("%d", ptr->roll);
Passing Structures to Functions
By value:
void display(struct Student s) { ... }
By reference (efficient):
void update(struct Student *s) { s->marks += 5; }
Returning Structures from Functions
struct Student createStudent() {
struct Student s = {101, "Ravi", 91.0};
return s;
}
typedef with Structures
To simplify:
typedef struct Student {
int roll;
char name[50];
} Student;
Now use:
Student s1;
File Handling with Structures
FILE *fp = fopen("students.dat", "wb");
fwrite(&s1, sizeof(s1), 1, fp);
fclose(fp);
Real-Life Example: Student Management System
Create an array, write to file, sort and display students using:
- Structures
- File I/O
- Functions
Also Read: Arrays in C/C++: Single & Multi-dimensional

Dynamic Memory Allocation
Student *s = (Student *)malloc(sizeof(Student));
In C++:
Student *s = new Student;
Memory Layout and Padding
Use sizeof(struct Student)
to analyze memory. Padding may cause sizes to differ based on compiler alignment rules.
Structures vs Classes
Feature | Structure | Class |
---|---|---|
Default access | public | private |
Supports functions | Yes | Yes |
Inheritance | No (C++) | Yes (C++) |
Combining Strings and Structures
char name[50]; // in C
In C++:
string name;
Use getline(cin, s.name)
to read full name.
Structure Array Sorting
sort(students, students+n, [](Student a, Student b) {
return a.marks > b.marks;
});
Searching in Structure Array
for (int i = 0; i < n; i++) {
if (students[i].roll == target)
return i;
}
Use in Game Development
Example:
struct Player {
string name;
int level;
int health;
};
Best Practices
- Initialize all members
- Use
typedef
for clarity - Prefer
string
in C++ overchar[]
Common Mistakes
- Forgetting to include
#include <string.h>
- Mixing C and C++ syntax
- Not using pointers when passing large structs

FAQs
What is a structure in C/C++?
A structure groups variables of different data types under one name.
Can I have functions in a structure?
Yes, in C++, not in C.
What is the default access modifier for struct in C++?public
Can a structure have another structure inside it?
Yes, that’s called a nested structure.
How do you access structure members using a pointer?
Use the arrow operator ->
Can I return a structure from a function?
Yes, C and C++ both allow returning structs.
Conclusion
Structures are powerful and form the backbone of modular design in both C and C++. Understanding them bridges your knowledge toward Object-Oriented Programming. This blog by Kamlesh Singad, curated under Code With Kamlesh, aims to build your skills with easy, real-world examples.
Continue your journey into OOP and classes in the next blog!