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
On this page (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.