User Defined Data Type in C – Structure, Union, Enum और Typedef को Detail में समझें

आज इस post में हम User Defined Data Type in C के बारे में detail में सीखेंगे। अगर आप C programming सीख रहे हैं तो यह topic आपके लिए बहुत ज़रूरी है, क्योंकि यही वो जगह है जहाँ से आप खुद के हिसाब से data को organize करना शुरू करते हैं।

जैसा कि आप जानते हैं, C language में data types दो तरह के होते हैं — Primitive (जैसे int, float, char) और Non-Primitive। Non-Primitive में Derived और User Defined data types आते हैं। हमारी पिछली post में हमने Derived Data Types जैसे Array, Pointer और Function को detail में पढ़ा था। अब इस post में हम आगे बढ़ेंगे और User Defined Data Types पर focus करेंगे।

इस post में आप सीखेंगे — Structure क्या होता है और कैसे use करते हैं, Union कैसे काम करता है, Enum का use कहाँ होता है, और Typedef से code को कैसे readable बनाया जाता है। साथ ही हम real examples, common mistakes, और FAQs भी cover करेंगे ताकि आपकी Understanding पूरी तरह clear हो जाए।

User Defined Data Type in C Programming क्या है?

जब हम किसी real-world problem को program में solve करते हैं, तो अक्सर हमें ऐसे data की ज़रूरत होती है जो built-in data types (int, float, char) से पूरी नहीं होती। उदाहरण के लिए, अगर आपको किसी Student की information store करनी हो — जैसे नाम, उम्र, और marks — तो आप तीन अलग-अलग variables तो बना सकते हैं, लेकिन यह approach organized नहीं है।

User Defined Data Type in C आपको यह power देता है कि आप खुद अपना data type बना सकें जो आपकी ज़रूरत के हिसाब से हो। जैसे real life में एक “Student” एक entity है जिसमें multiple properties होती हैं — ठीक वैसे ही programming में भी हम एक custom type बना सकते हैं।

C language में मुख्य रूप से चार User Defined Data Types होते हैं:

  1. Structure
  2. Union
  3. Enum (Enumeration)
  4. Typedef

1. Structure in C Programming

Structure क्या होता है?

Structure एक ऐसा user defined data type है जो अलग-अलग data types के variables को एक साथ एक single unit में group करता है। इसे एक real-life form की तरह समझें — जैसे school का admission form जिसमें नाम, उम्र, class, address — सब एक साथ होता है।

Syntax of Structure

struct structure_name {

	data_type member1;

	data_type member2;

	data_type member3;

};

Syntax के Parts को समझें:

  • struct — यह keyword बताता है कि हम एक structure define कर रहे हैं।
  • structure_name — यह structure का नाम है जो आप खुद देते हैं (जैसे Student, Employee)।
  • data_type member — ये structure के अंदर के variables हैं जिन्हें members कहते हैं।
  • }; — Closing curly brace के बाद semicolon ज़रूरी है।

Structure का object बनाने के लिए:

struct structure_name variable_name;

Members को access करने के लिए dot operator (.) use होता है:

variable_name.member1;

Example Program – Structure in C

#include <stdio.h>
 
// Defining a Structure for Student
struct Student {
	char name[50];   // Student's name
	int age;     	// Student's age
	float marks; 	// Student's marks
};
 
int main() {
	// Creating a variable of struct Student
	struct Student s1;
 
	// Assigning values to members
	printf("Enter student name: ");
	scanf("%s", s1.name);
 
	printf("Enter age: ");
	scanf("%d", &s1.age);
 
	printf("Enter marks: ");
	scanf("%f", &s1.marks);
 
	// Displaying the student details
	printf("\n--- Student Details ---\n");
	printf("Name  : %s\n", s1.name);
	printf("Age   : %d\n", s1.age);
	printf("Marks : %.2f\n", s1.marks);
 
	return 0;
}
▶️ Output Result
Enter student name: Ravi Enter age: 22 Enter marks: 85.5— Student Details — Name : Ravi Age : 22 Marks : 85.50

Code Explain

  • सबसे पहले हमने struct Student define किया जिसमें तीन members हैं — name, age, और marks।
  • main() function में struct Student s1; से एक variable बनाया।
  • scanf() से user से input लिया और dot operator (.) से members में values assign कीं।
  • अंत में printf() से सारी details print की।

यह approach बहुत organized है — सारा student data एक ही variable s1 में manage हो रहें हैं।

Structure in C programming showing declaration, initialization methods, and structure members with an example.

2. Union in C Programming

Union क्या होता है?

Union भी structure की तरह ही होता है, लेकिन इसमें एक बड़ा फर्क है — Union के सभी members एक ही memory location share करते हैं। इसका मतलब है कि एक समय पर केवल एक ही member की value valid रहती है।

इसे एक locker की तरह समझें जिसमें एक बार में केवल एक person का सामान रह सकता है।

Union का size उसके सबसे बड़े member के size के बराबर होता है।

Syntax of Union

union union_name {

	data_type member1;

	data_type member2;

	data_type member3;

};

Syntax के Parts:

  • union — keyword जो union define करता है।
  • union_name — आपका दिया हुआ नाम।
  • Members — जो एक ही memory location share करते हैं।

Example Program – Union in C

#include <stdio.h>
 
// Defining a Union
union Data {
	int integer_val; 	// Integer member
	float float_val; 	// Float member
	char char_val;   	// Character member
};
 
int main() {
	union Data d;
 
	// Assigning and accessing one member at a time
	d.integer_val = 42;
	printf("Integer Value : %d\n", d.integer_val);
 
	d.float_val = 3.14f;
	printf("Float Value   : %.2f\n", d.float_val);
 
	d.char_val = 'A';
	printf("Char Value	: %c\n", d.char_val);
 
	// Showing shared memory size
	printf("Size of Union : %lu bytes\n", sizeof(d));
 
	return 0;
}
▶️ Output Result
Integer Value : 42 Float Value : 3.14 Char Value : A Size of Union : 4 bytes

Code Explain

  • union Data में तीन members हैं — int, float, और char।
  • हम एक बार में एक ही member को assign और access कर रहे हैं।
  • जब d.float_val assign होता है, तो d.integer_val की value automatically overwrite हो जाती है।
  • sizeof(d) union का size print करता है, जो यहाँ float के size (4 bytes) के बराबर होगा।

Structure vs Union: Structure में सभी members का अलग-अलग memory होती है, जबकि Union में एक ही memory होती है। Structure ज़्यादा memory use करता है, Union कम।

Union in C programming showing declaration, example program, and shared memory location of union members.

3. Enum (Enumeration) in C Programming

Enum क्या होता है?

Enum यानी Enumeration एक ऐसा user defined data type है जिससे आप named integer constants का एक set बना सकते हैं। इससे code ज़्यादा readable और meaningful बनता है।

Real-world example: Week के दिन — Monday, Tuesday… इन्हें numbers (0, 1, 2…) से represent करने की बजाय names से represent करना ज़्यादा clear होता है।

Syntax of Enum

enum enum_name {

	CONSTANT1,

	CONSTANT2,

	CONSTANT3

};

Syntax के Parts:

enum — keyword।

enum_name — आपका दिया हुआ नाम।

 CONSTANT1, CONSTANT2… — ये values automatically 0 से शुरू होकर 1-1 बढ़ती हैं। आप manually भी value assign कर सकते हैं।

Enum variable (नया) — enum बनाने के बाद enum enum_name variable_name; लिखकर उस type का variable बनाया जाता है, जैसे enum Day today;। यह variable सिर्फ enum के named constants की value hold करता है और internally int की तरह store होता है। 

Example Program – Enum in C

#include <stdio.h>
 
// Defining Enum for Days of Week
enum Day {
	MONDAY = 1,   // Manually starting from 1
	TUESDAY,
	WEDNESDAY,
	THURSDAY,
	FRIDAY,
	SATURDAY,
	SUNDAY
};
 
int main() {
	enum Day today;
	today = WEDNESDAY;
 
	printf("Day number: %d\n", today);
 
	// Using enum in switch statement
	switch(today) {
    	case MONDAY:
        	printf("Start of the work week!\n");
        	break;
    	case WEDNESDAY:
        	printf("Mid week - keep going!\n");
        	break;
    	case FRIDAY:
        	printf("Weekend is near!\n");
        	break;
    	default:
        	printf("It's a regular day.\n");
	}
 
	return 0;
}
▶️ Output Result
Day number: 3 Mid week – keep going!

Code Explain

  • enum Day में सातों दिन define किए हैं, MONDAY = 1 से शुरू करके।
  • today = WEDNESDAY assign किया, जिसकी value automatically 3 है ।
  • Switch statement में enum values को human-readable names से compare किया — यही enum की असली ताकत है।
enumration in C explain in infographics - user defined data type in c

4. Typedef in C Programming

Typedef क्या होता है?

Typedef एक keyword है जिससे आप existing data types को एक नया नाम (alias) दे सकते हैं। यह खुद कोई नया data type नहीं बनाता, बल्कि already existing type को shortcut देता है।

जैसे — unsigned long int बार-बार लिखना tedious है, तो हम इसे ulong नाम दे सकते हैं।

Syntax of Typedef

typedef existing_data_type new_name;

Syntax के Parts:

  • typedef — keyword।
  • existing_data_type — जो type already exist करती है (जैसे int, struct Student)।
  • new_name — नया alias जो आप देना चाहते हैं।

Example Program – Typedef in C

#include <stdio.h>
 
// Typedef with basic data type
typedef unsigned int uint;
 
// Typedef with Structure
typedef struct {
	char name[50];
	int age;
	float salary;
} Employee;
 
int main() {
	// Using typedef alias instead of 'unsigned int'
	uint emp_id = 1001;
 
	// Using 'Employee' directly without 'struct' keyword
	Employee e1;
 
	e1.age = 30;
	e1.salary = 55000.50f;
 
	printf("Employee ID 	: %u\n", emp_id);
	printf("Employee Age	: %d\n", e1.age);
	printf("Employee Salary : %.2f\n", e1.salary);
 
	return 0;
}
▶️ Output Result
Employee ID : 1001 Employee Age : 30 Employee Salary : 55000.50

Code Explain

  • typedef unsigned int uint; — अब हम unsigned int की जगह सिर्फ uint लिख सकते हैं।
  • typedef struct { … } Employee; — अब structure variable बनाने के लिए struct Employee की जगह सिर्फ Employee लिखना काफी है।
  • यह code को cleaner और readable बनाता है, खासकर जब आप बड़े programs लिखते हैं।

Common Mistakes जो Beginners करते हैं

User Defined Data Types in C सीखते समय beginners अक्सर कुछ common mistakes करते हैं। इन्हें जानना ज़रूरी है ताकि आप इनसे बच सकें।

1. Structure definition के बाद Semicolon भूल जाना
यह सबसे common mistake है। struct या union के closing brace के बाद semicolon (;) लगाना ज़रूरी है, वरना compilation error आता है।

struct Student { … };  // ✅ सही

struct Student { … }   // ❌ गलत

2. Union में एक साथ Multiple Members Access करना
Beginners सोचते हैं कि Union में सभी members एक साथ access हो सकते हैं जैसे Structure में होते हैं। लेकिन Union में एक time पर सिर्फ एक member valid होता है। एक member assign करने के बाद दूसरे member की value garbage हो जाती है।

3. Enum Constants को Lowercase में लिखना
यह technically error नहीं है, लेकिन C programming convention के अनुसार Enum constants को UPPERCASE में लिखा जाता है (जैसे MONDAY, RED, SUCCESS)। इससे code readable रहता है।

4. Typedef को नया Data Type समझना
Typedef कोई नया type नहीं बनाता — यह सिर्फ existing type को एक alias देता है। कई beginners इसे नई type creation समझ लेते हैं, जो गलत है।

5. Structure Variable के साथ Arrow Operator और Dot Operator में Confusion
जब structure variable normally declare हो तो . (dot operator) use होता है, और जब pointer से access करना हो तो -> (arrow operator) use होता है। इन्हें mix करने पर error आता है।

s1.age = 20; // ✅ Normal variable

ptr->age = 20;   // ✅ Pointer variable

Conclusion ( निष्कर्ष )

इस post में हमने User Defined Data Type in C के चारों प्रकारों को detail में समझा। हमने देखा कि Structure कैसे related data को एक unit में group करता है, Union कैसे memory-efficient तरीके से काम करता है, Enum कैसे code को readable और meaningful बनाता है, और Typedef कैसे complex type names को simple alias देता है। इन चारों को सही से समझ लेने के बाद आप C में बड़े और organized programs लिखने में बहुत ज़्यादा comfortable महसूस करेंगे। साथ ही हमने 5 common mistakes भी cover कीं जो beginners अक्सर करते हैं — इन्हें ध्यान में रखकर आप अपना code error-free बना सकते हैं।

अगर यह post आपके लिए helpful रही हो तो इसे अपने दोस्तों और fellow programmers के साथ ज़रूर share करें जो C programming सीख रहे हैं। अगर आपके मन में कोई सवाल है या कोई topic और detail में समझना हो तो नीचे comment कर सकते हैं। 

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top