C भाषा में टाइपडेफ Typedef in C

C भाषा में टाइपडेफ What is Typedef


C भाषा में typedef एक विशेष कीवर्ड है जो डेटा टाइप को एक नए नाम से पुनःनिर्देशित करने के लिए उपयोग किया जाता है।

typedef का उपयोग इसलिए किया जाता है क्योंकि यह प्रोग्राम को समझने में मदद करता है। यदि एक प्रोग्राम में कई जगहों पर एक ही डेटा टाइप का उपयोग हो रहा है तो उस डेटा टाइप के लिए एक नाम तय करके उसे पुनःनिर्देशित करना सरल बनाता है।

इसका एक उदाहरण निम्नलिखित है:

typedef unsigned char byte;

int main() {
    byte b = 'A';
    printf("%c\n", b);
    return 0;
}

इस प्रोग्राम में, typedef का उपयोग एक unsigned char को byte नाम से पुनःनिर्देशित करने के लिए किया गया है। इससे, जब भी हम byte का उपयोग करेंगे तो वास्तविक रूप से unsigned char ही होगा। इसका अर्थ है कि हमें unsigned char नाम से उसे लिखने की आवश्यकता नहीं होगी।

C भाषा में typedef कीवर्ड का उपयोग डेटा टाइप को एक नए नाम से पुनःनिर्देशित करने के लिए किया जाता है। यह प्रोग्राम को समझने में मदद करता है जब कई जगहों पर एक ही डेटा टाइप का उपयोग हो रहा हो।

आमतौर पर, C में डेटा टाइप को पुनःनिर्देशित करने के लिए संशोधक या वेरिएबल के पहले नाम के साथ एक नया नाम दिया जाता है। उदाहरण के लिए, आप निम्नलिखित तरीके से एक संरचना को पुनःनिर्देशित कर सकते हैं:

struct employee {
    char name[50];
    int age;
    float salary;
};

typedef struct employee employee_t;

यहां, struct employee को employee_t नाम से पुनःनिर्देशित किया गया है। अब हम employee_t नाम का उपयोग कर सकते हैं, जो struct employee डेटा टाइप के बराबर होगा:

employee_t emp1;
emp1.age = 25;
emp1.salary = 50000.0;
strcpy(emp1.name, "John Doe");

इससे, हम अपने कोड को सुधारने और संभवतः दोहराव को रोकने के लिए प्रोग्राम में आसानी से बदलाव कर सकते हैं।

Typedef का उदाहरण

यदि हम किसी नए टाइप को पहले से मौजूदा टाइप से बनाना चाहते हैं, तो हम उसके लिए typedef का उपयोग करते हैं। typedef का उपयोग इसलिए किया जाता है क्योंकि यह कोड को पढ़ने और समझने में आसान बनाता है।

उदाहरण के लिए, हम एक पॉइंटर बनाना चाहते हैं जो एक int वैल्यू को दर्शाता है। इसके लिए हम निम्न ढंग से typedef का उपयोग कर सकते हैं:

typedef int* IntPointer;

IntPointer ptr;
int value = 10;
ptr = &value;
printf("Value is %d\n", *ptr);

यहां, हमने typedef का उपयोग करके नए टाइप IntPointer बनाया है जो एक int पॉइंटर को दर्शाता है। फिर हमने नए पॉइंटर पर &value को सेट किया जो मूल वैल्यू के पते को दर्शाता है। अंत में, हम *ptr का उपयोग करके पॉइंटर के मूल्य को प्रिंट करते हैं।

इस उदाहरण में, typedef का उपयोग करने से हम अपने कोड को स्पष्ट बनाते हैं और इसे समझने में आसानी होती है।

typedef vs #define

typedef और #define दोनों C भाषा में इस्तेमाल होने वाले टाइप नामों को परिभाषित करने के लिए उपयोग किए जाते हैं। दोनों के उपयोग से नए टाइप नाम बनाए जा सकते हैं, लेकिन उनमें कुछ मुख्य अंतर होते हैं:

typedef नए टाइप नामों को परिभाषित करता है, जबकि #define कंपाइलर मेकरों को उस स्ट्रिंग के साथ बदलने के लिए विन्यस्त करता है।

typedef को इस्तेमाल करते समय कंपाइलर टाइप के नाम को जानता है, जबकि #define का उपयोग सीधे स्ट्रिंग नामों का उपयोग करता है, जो कंपाइलर के लिए सामान्य स्ट्रिंगों के समान होते हैं।

typedef नए टाइप नाम के रूप में परिभाषित होता है जो साथ में संबंधित टाइप से संबंधित होता है, जबकि #define कोड में इस्तेमाल होने वाले स्ट्रिंग का उपयोग करता है।

इसलिए, यदि हम टाइप नाम को परिभाषित करना चाहते हैं तो typedef का उपयोग करते हैं। वहीं, यदि हम एक स्ट्रिंग को परिभाषित करना चाहते हैं तो हम #define का उपयोग करते हैं। जैसे कि:

typedef int myint;

#define myint int

यहां, typedef का उपयोग myint नामक एक नए टाइप नाम के रूप में int को परिभाषित करने के लिए किया गया है, जबकि #define का उपयोग myint के लिए int से एक स्ट्रिंग का परिभाषण करने के लिए किया गया है।

एक और उदाहरण देखते हैं:

typedef struct {
    int x;
    int y;
} Point;

    #define Point_struct struct { \
    int x; \
    int y; \
}

इस उदाहरण में, typedef का उपयोग Point नामक नए टाइप नाम के रूप में संरचना को परिभाषित करने के लिए किया गया है। यह Point नामक संरचना दो इंटीजर वेरिएबल (x और y) को एक स्थान पर संग्रहित करती है।

वहीं, #define का उपयोग Point_struct से struct {int x; int y;} स्ट्रिंग को परिभाषित करने के लिए किया गया है। यह Point_struct स्ट्रिंग को उपयोग करके संरचना को परिभाषित करने के लिए उपयोग किया जा सकता है।

इस प्रकार, दोनों typedef और #define अपनी जगह पर इस्तेमाल किए जाते हैं और दोनों के अपने अलग-अलग उपयोग होते हैं।