Lesson 11 — Intermediate

Structures & Unions

Ek student ka naam (char), roll (int) aur marks (float) — teen alag type. Inhe ek jagah rakhne ka tarika hai structure. Is lesson mein hum struct banana, pointer ke saath access, typedef/enum, aur union ka "ek hi memory" wala khel dekhenge.

⏱ 14 min• Intermediate• Pointers

Structure kaise banta hai

WHAT

Structure alag-alag type ke data members ko ek naam ke under ek saath rakhta hai. Har member ki apni jagah (memory) hoti hai — sab alag-alag, par ek saath access.

WHEN

Jab ek record ke hisse alag type ke hon — student (name, roll, marks), account (id, balance), point (x, y). Ek variable mein poora record = clean code.

WHERE

Database jaise records, config data, function ek saath bahut values bhejne ke liye — aur aage DSA (linked list, tree) mein structure hi base hai.

#include <stdio.h>
#include <string.h>

struct Student {
    char name[50];
    int roll;
    float marks;
};

int main() {
    struct Student s1;
    strcpy(s1.name, "Rahul");
    s1.roll = 101;
    s1.marks = 88.5;

    printf("%s %d %.1f\n", s1.name, s1.roll, s1.marks);
    return 0;
}

Output: Rahul 101 88.5

Array of structs aur -> operator

#include <stdio.h>

struct Student { char name[20]; int roll; float marks; };

int main() {
    struct Student cls[3] = {
        {"Anu", 1, 90.0}, {"Raj", 2, 76.5}, {"Sia", 3, 85.0}
    };

    for (int i = 0; i < 3; i++)
        printf("%s: %.1f\n", cls[i].name, cls[i].marks);

    struct Student *p = &cls[0];       // pointer to struct
    printf("Roll = %d\n", p->roll);     // -> = pointer se member
    return 0;
}

Output:
Anu: 90.0
Raj: 76.5
Sia: 85.0
Roll = 1
Dot vs Arrow: struct ki VALUE ke liye dot (s1.roll), struct ke POINTER ke liye arrow (p->roll). Arrow = (*p).roll ka chhota roop. Interview mein farak poochha jaata hai — dono ka matlab same hain bas syntax alag.

Array of structures hi asli duniya hai — class ki attendance list, bank ki account list, cricket scorecard. Har record ek struct, poora list ek array. DSA mein iska advanced roop linked list banega (size fixed nahi chahiye toh).

typedef aur enum — naam ki suvidha

#include <stdio.h>

typedef struct {
    int x, y;
} Point;                 // Point ab struct ka alias hai

typedef unsigned long big;   // big = unsigned long

enum Day { MON, TUE, WED };  // MON=0, TUE=1, WED=2
enum Color { RED = 1, GREEN = 5, BLUE };  // BLUE = 6 (agle se)

int main() {
    Point p; p.x = 10; p.y = 20;
    printf("(%d,%d)\n", p.x, p.y);
    printf("%d %d %d\n", MON, TUE, WED);
    printf("%d %d %d\n", RED, GREEN, BLUE);
    return 0;
}

Output:
(10,20)
0 1 2
1 5 6

Union — ek hi memory sabke liye

#include <stdio.h>

struct S { char a; int b; char c; };
union U { char a; int b; char c; };

int main() {
    printf("struct = %zu\n", sizeof(struct S));  // 12 (alag + padding)
    printf("union  = %zu\n", sizeof(union U));   // 4  (sabse bada member)

    union U u;
    u.b = 65;
    printf("%c %d\n", u.a, u.b);   // A (int ka pehla byte = char)
    return 0;
}

Output (typical):
struct = 12
union  = 4
Interview gold: Q: "union ka size kaise decide hota hai?" A: sabse bade member + alignment. Q: "kab use ho?" — memory-tight situations (network packets, embedded, variant tags) mein. Struct = sab, union = ek samay ek.

Exercise

Question: Structure ke POINTER se member access karne wala operator kaunsa hai? (. ya ->)

Question: Union mein members ki memory alag hoti hai ya shared (ek saath)?

Question: typedef ka kya kaam hota hai? (do shabd — naam/alias dena)

Question: enum { MON, TUE, WED }; mein MON ki default value kya hai? Sirf number daalo.

Common mistakes

Desi example: Aadhar card — struct ka desi version

Aadhar card pe naam, number, DOB — alag type ka data, par ek hi card. Wahi structure hai. Union tab jab ek card pe sirf ek info chhapni ho:

text
struct Aadhar {
    char naam[30];   // Rahul
    long number;     // 1234
    char dob[11];    // 01-01-2000
};                   // teeno ek saath — struct

union Kyc {          // KYC mein ek time pe ek:
    long pan;
    char passport[10];
};                   // shared memory — size = bada wala
Exam mapping (TCS / GATE / College)
  • TCS NQT: struct output (. vs ->) + sizeof(union) — 1-2Q.
  • GATE: struct vs union memory layout, padding, enum values.
  • College exam: student record program (array of structs + display) — classic.
  • Trap: "union sab members store kar sakta hai ek saath" — nahi, ek hi memory hai.
Lesson complete?

Structures clear. Agla lesson — File Handling — mein seekhenge data ko program ke bahar (disk pe) kaise rakhte hain.

Popular courses: Data Science Course in Lucknow · AI Course in Lucknow · Python Course in Lucknow · Power BI Course · Data Analytics Course