Structures — Basics
Array sirf ek hi type ke elements rakh sakta hai (jaise sirf ints ya sirf strings). Struct multiple, DIFFERENT types ko ek saath group karne deta hai — jaise ek "Student" mein naam (char array), roll number (int), aur marks (float) ek saath.
struct keyword se define karte hain, phir uske members ko dot (.) operator se access karte hain. Ek struct ka naam define karke tum us type ke jitne chaho utne variables bana sakte ho — jaise int ke multiple variables banate ho.
struct Student {
char name[50];
int rollNumber;
float marks;
};
int main() {
struct Student s1;
strcpy(s1.name, "Aarav");
s1.rollNumber = 101;
s1.marks = 92.5;
printf("%s scored %.1f\n", s1.name, s1.marks);
return 0;
}- struct = multiple alag types ek saath group karna
- . (dot) operator se members access karo
- Ek struct type ke multiple variables bana sakte ho
Struct ka array banana bahut common hai — jaise 30 students ka data store karna. Har array element ek poora struct hai, apne saare members ke saath.
struct Student {
char name[30];
int marks;
};
int main() {
struct Student class[3] = {
{"Aarav", 85},
{"Riya", 92},
{"Zoya", 78}
};
for (int i = 0; i < 3; i++) {
printf("%s: %d\n", class[i].name, class[i].marks);
}
return 0;
}sizeof(struct) hamesha members ke individual sizes ka simple sum nahi hota — compiler alignment ke liye "padding" (khaali bytes) add kar sakta hai, taaki har member ek efficient memory boundary par ho. Ye ek common interview surprise hai.
struct Example {
char c; // 1 byte
int i; // 4 bytes
};
printf("%lu\n", sizeof(struct Example));
// 8 expected nahi hai (1+4=5), aksar 8 milta hai — 3 bytes padding
// taaki 'i' ek 4-byte-aligned address par shuru ho