🏷️
Structures & Unions

typedef

Naye Naam Types Ko Do
💡 typedef ek nickname dene jaisa hai — "struct Student" baar-baar likhne ki jagah, ek chhota, saaf naam "Student" de sakte ho, jaise kisi ka poora naam "Rajendra Kumar Sharma" ki jagah sabhi "Raju" bolte hain.

C mein struct define karne ke baad, uska variable banane ke liye har baar struct keyword likhna padta hai: struct Student s1;. typedef se ek shorter alias bana sakte ho, taaki sirf Student s1; likh sako — Java/C++ ki tarah zyada clean lagta hai.

typedef sirf structs ke liye nahi — kisi bhi type (int, pointer types, arrays) ke liye naya naam bana sakte ho. Bahut use hota hai complex types (jaise function pointers) ko readable banane ke liye.

// typedef ke bina:
struct Student {
  char name[50];
};
struct Student s1;   // 'struct' likhna zaroori

// typedef ke saath:
typedef struct {
  char name[50];
} Student;

Student s2;   // 'struct' likhne ki zaroorat nahi!

// dusre types ke liye bhi:
typedef unsigned int uint;
uint age = 25;
🏷️
typedef ek nickname dene jaisa hai — "struct Student" baar-baar likhne ki jagah, ek chhota, saaf naam "Student" de sakte ho, jaise kisi ka poora naam "Rajendra Kumar Sharma" ki jagah sabhi "Raju" bolte hain.
1 / 2
⚡ Quick Recap
  • typedef = kisi type ko naya, chhota naam do
  • struct ke saath use karke baar-baar 'struct' likhna avoid karo
  • Complex types (function pointers) ko readable banane mein bhi useful
Is page mein (1 subtopics)

typedef aur #define dono naye naam bana sakte hain, lekin typedef ek real type-alias hai (compiler isse samajhta hai, type-checking hoti hai) jabki #define sirf text substitution hai (preprocessor blindly replace karta hai, koi type-safety nahi).

typedef unsigned int uint;   // compiler-aware type
#define UINT unsigned int     // sirf text replace

uint a = 5;      // sahi
UINT b = 5;      // ye bhi kaam karta hai, lekin...

typedef char* String;
#define STRING char*

String s1, s2;    // dono char* hain — sahi
STRING s3, s4;     // s3 = char*, LEKIN s4 = char (text substitution ka trap!)
⚠️Common Mistake: #define STRING char* ke saath STRING s3, s4; likhna trap hai — preprocessor isse "char* s3, s4;" mein badalta hai, jaha sirf s3 pointer hai, s4 normal char hai. typedef is problem se bachata hai.