“हैलो दोस्त! इस पोस्ट में हम C प्रोग्रामिंग के अक्सर पूछे जाने वाले इंटरव्यू प्रश्न और उनके उत्तर कवर करेंगे, जो बेसिक से लेकर एडवांस लेवल तक के टॉपिक्स को शामिल करते हैं। ये प्रश्न और उत्तर आपके किसी भी सॉफ्टवेयर कंपनी के इंटरव्यू में काफी मददगार साबित हो सकते हैं। चलिए शुरू करते हैं और अपनी इंटरव्यू तैयारी को एक नया जुनून देते हैं!”
C- Basic Level Questions
1. C क्या है और इसका Use क्या हैं?
- उत्तर: C एक सामान्य उद्देश्य वाली प्रोग्रामिंग भाषा है, जिसे 1970 के दशक में Dennis Ritchie ने विकसित किया था। यह एक संरचित (structured) भाषा है और ऑपरेटिंग सिस्टम, गेम, सिस्टम सॉफ्टवेयर, डिवाइस ड्राइवर्स और कंपाइलर डेवलपमेंट में बहुत उपयोग की जाती है। इसकी गति और पोर्टेबिलिटी के कारण इसे “मदर लैंग्वेज” भी कहा जाता है, क्योंकि अन्य कई भाषाएँ जैसे Python, Java, SQL, Visual Studio और Visual Basic इसी पर आधारित हैं।
2. C भाषा के मुख्य फीचर्स क्या हैं?
- उत्तर: C भाषा के मुख्य फीचर्स निम्नलिखित हैं:
- सरल और संरचित (Simple and Structured): इसका syntax सरल और पढ़ने में आसान है।
- मशीन स्वतंत्रता (Machine Independent): C प्रोग्राम विभिन्न हार्डवेयर प्लेटफॉर्म पर चल सकते हैं।
- फंक्शन रिच (Function-Rich): इसमें कई बिल्ट-इन function हैं और यूज़र खुद के functions भी बना सकते हैं।
- लो-लेवल (Low-Level) ऑपरेटर: C में बिट लेवल और Memory Addressing के ऑपरेटर होते हैं, जिससे हार्डवेयर कंट्रोल करना आसान होता है।
- रीयूसेबिलिटी (Reusability): C प्रोग्राम में एक बार कोड लिखकर उसे बार-बार उपयोग किया जा सकता है।
3. C में Data Types के क्या हैं?
- उत्तर:
- Primitive Data Types
int
float
char
double
- Derived Data Types
- Array, Pointer, Structure, Union
- Enumeration Data Types
enum
का उपयोग pre-define variable की list बनाने के लिए किया जाता है।
- Primitive Data Types
4. कौन से ऑपरेटर C भाषा में उपलब्ध होते हैं?
- उत्तर: C भाषा में कई प्रकार के ऑपरेटर उपलब्ध होते हैं:
- Arithmetic Operators: +, -, *, /, %
- Relational Operators : ==, !=, >, <, >=, <=
- Logical Operators: &&, ||, !
- Bitwise: <<, >>, &, ^, |, ~,
- Assignment Operators =, +=, -=, *=, /=, %=
- Increment/Decrement Operators: ++, —
- Conditional (Ternary) Operator: ? :
- Special Operators:
sizeof
,&
(address of),*
(pointer dereference)
5. Variables क्या हैं और C में Variable को कैसे Declare करते हैं?
उत्तर: वेरिएबल्स किसी प्रोग्राम में डेटा को स्टोर करने के लिए मेमोरी लोकेशन का नाम होता है। इनका उपयोग डेटा को अस्थायी रूप से रखने और बदलने के लिए किया जाता है।
C में variable declaration का तरीका:
<data_type> <variable_name>
उदाहरण:
int age;
float salary;
char grade;
यहाँ int
, float
, और char
डेटा प्रकार हैं, और age
, salary
, और grade
वेरिएबल के नाम हैं।
C- Intermediate Level Questions
1. C में function क्या है?
- उत्तर: function एक block होता है जिसमें कुछ विशेष कार्य के लिए code लिखा होता है। इसे बार-बार उपयोग किया जा सकता है और कोड को संरचित और मॉड्यूलर बनाता है।
- उदाहरण के लिए फंक्शन डिक्लेरेशन:cCopy code
int add(int a, int b) { return a + b; }
- इस फंक्शन को
add(5, 3);
के रूप में कॉल कर सकते हैं, जो 8 रिटर्न करेगा। फंक्शन में इनपुट पैरामीटर (argument) और रिटर्न वैल्यू होती है।
2. Pointers क्या हैं?
- उत्तर: Pointers ऐसे variable होते हैं जो किसी अन्य variable के मेमोरी address को स्टोर करते हैं। pointers का उपयोग direct memory access और data handling में किया जाता है।
- उदाहरण:
int num = 55;
int *ptr1 = # // ptr में x का एड्रेस स्टोर होता है
printf("%d", *ptr1); // num की value print होगी, यानी 55
- यहाँ
*ptr
से पॉइंटरptr
की वैल्यू प्राप्त की जाती है।
3. Memory Allocation के प्रकार कौन-कौन से हैं? malloc और calloc में क्या अंतर है?
- उत्तर: C में मेमोरी एलोकेशन के दो मुख्य प्रकार होते हैं:
- Static Memory Allocation: कंपाइल-टाइम पर मेमोरी तय हो जाती है, जैसे
int arr[10];
में। - Dynamic Memory Allocation: Run Time पर Memory Allocate होती है, जो
malloc
,calloc
, औरrealloc
के द्वारा की जाती है।
- Static Memory Allocation: कंपाइल-टाइम पर मेमोरी तय हो जाती है, जैसे
malloc
औरcalloc
में अंतर:- malloc: यह एक Single Block में Memory Allocate करता है और इसे Initialize नहीं करता।
int *ptr = (int *)malloc(5 * sizeof(int));
- calloc: यह मेमोरी को Multiple Blocks में Allocate करता है और Initialize भी करता है (सभी Value 0 होंगी)।
- Example:-
int *ptr = (int *)calloc(5, sizeof(int));
int *ptr = (int *)calloc(5, sizeof(int));
4. Array और Pointer में क्या अंतर है?
- उत्तर:
- Array: यह एक स्थिर डेटा संरचना है, जिसमें एक ही प्रकार के डेटा का संग्रह होता है। एक बार आकार तय करने के बाद इसे बदला नहीं जा सकता।
- Pointer: यह एक Variable है, जो किसी अन्य Variable या Array के Memory Address को स्टोर करता है। यह Dynamic होता है और विभिन्न लोकेशन को पॉइंट कर सकता है।
- उदाहरण:
int arr[5]; // Array
int *ptr = arr; // Pointer को Array के पहले एलिमेंट का एड्रेस मिला
5. Struct और Union में क्या अंतर है?
- उत्तर:
- Struct (Structure): यह डेटा का एक समूह है, जिसमें विभिन्न प्रकार के डेटा हो सकते हैं। इसमें सभी मेंबर्स के लिए अलग-अलग मेमोरी Allocate होती है।
struct Person {
char name[20];
int age;
float salary;
};
- Union: इसमें भी विभिन्न प्रकार का डेटा हो सकता है, लेकिन सभी मेंबर्स एक ही मेमोरी लोकेशन को शेयर करते हैं। इसमें सबसे बड़े मेंबर के साइज जितनी ही मेमोरी एलोकेट होती है।
union Data {
int i;
float f;
char str[20];
};
- अंतर:
struct
में हर मेंबर का अलग-अलग मेमोरी लोकेशन होता है, जबकिunion
में सभी मेंबर्स एक ही मेमोरी शेयर करते हैं।
6. Static और Global Variable में क्या अंतर है?
- उत्तर:
- Static Variable: ये Variable Function या Block में Declare होते हैं, लेकिन इनका Lifetime पूरे प्रोग्राम के दौरान होता है। एक बार Value Set होने के बाद ये Memory में बनी रहती है, भले ही Function कई बार Call हो।
void func() {
static int count = 0;
count++;
printf("%d", count);
}
- Global Variable: ये variable file के बाहर भी access किए जा सकते हैं। इनका scope पूरे program के सभी function में होता है।
int globalVar = 10; // Global variable
- अंतर:
static
वेरिएबल्स का स्कोप फंक्शन तक ही सीमित होता है, लेकिन इनका लाइफटाइम पूरे प्रोग्राम में रहता है।global
वेरिएबल्स का स्कोप पूरे प्रोग्राम में होता है, और ये हर फंक्शन से एक्सेस किए जा सकते हैं।
C- Advance Level Questions
1. C में function Pointer क्या होता है?
- उत्तर: function pointer ऐसा pointer होता है, जो किसी function के address को स्टोर करता है। इसका उपयोग Run-Time पर विभिन्न function को call करने, कॉलबैक मेकैनिज्म, और dynamic function call के लिए किया जा सकता है।
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int main() {
int (*funcPtr)(int, int); // Function pointer declaration
funcPtr = &add; // Assigning function's address
int result = funcPtr(5, 3); // Calling function via pointer
printf("Result: %d\n", result); // Output: 8
return 0;
}
- यहाँ
funcPtr
function pointer है, जोadd
फ़ंक्शन का एड्रेस स्टोर करता है और उसे रन-टाइम पर कॉल कर सकता है।
2. Dynamic Memory Allocation क्या है?
- उत्तर: डायनेमिक मेमोरी एलोकेशन एक ऐसी प्रक्रिया है जिसमें रन-टाइम पर मेमोरी एलोकेट की जाती है। इससे प्रोग्राम को रन-टाइम पर मेमोरी का आकार बदलने और उपयोगकर्ता की आवश्यकताओं के आधार पर संसाधनों का अनुकूलन करने में मदद मिलती है।
- डायनेमिक मेमोरी एलोकेशन के लिए C में निम्नलिखित फंक्शन्स होते हैं:
malloc()
: मेमोरी एलोकेट करता है, लेकिन उसे इनिशियलाइज़ नहीं करता।calloc()
: मेमोरी एलोकेट करता है और उसे 0 से इनिशियलाइज़ करता है।realloc()
: पहले से एलोकेटेड मेमोरी का आकार बदलता है।free()
: डायनेमिकली एलोकेटेड मेमोरी को रिलीज़ करता है।
- उदाहरण:
int *arr = (int *)malloc(5 * sizeof(int));
if (arr == NULL) {
printf("Memory not allocated.\n");
} else {
for (int i=1; i<=5; i++) {
arr[i] = i + 1;
printf("%d ", arr[i]);
}
free(arr); // मेमोरी रिलीज़ करता है
}
3. C में File Handling क्या है? fopen, fclose, fread, fwrite के उपयोग समझाइये।
- उत्तर: C में फाइल हैंडलिंग का उपयोग फ़ाइलों को खोलने, पढ़ने, लिखने, और बंद करने के लिए किया जाता है। इसके लिए निम्नलिखित फंक्शन्स उपयोगी होते हैं:
- fopen: फ़ाइल को खोलता है और एक फ़ाइल पॉइंटर रिटर्न करता है।
FILE *file = fopen("example.txt", "r");
- fclose: फ़ाइल को बंद करता है।
fclose(file);
- fread: फ़ाइल से डेटा पढ़ता है।
int arr[5];
fread(arr, sizeof(int), 5, file);
- fwrite: फ़ाइल में डेटा लिखता है।
int arr[3] = {1, 5, 25, 625};
fwrite(arr, sizeof(int), 5, file);
- उदाहरण
#include <stdio.h>
int main() {
FILE *file = fopen("data.bin", "wb");
if (file == NULL) {
printf("File cannot be opened.\n");
return 1;
}
int data[6] = {2, 4, 16, 35, 44, 66};
fwrite(data, sizeof(int), 6, file);
fclose(file);
return 0;
}
4. Recursion क्या है, और इसका उपयोग C में कैसे किया जा सकता है?
- उत्तर: Recursion एक प्रोग्रामिंग तकनीक है जिसमें एक फंक्शन खुद को कॉल करता है। इसका उपयोग समस्याओं को छोटे उप-समस्याओं में विभाजित करके हल करने के लिए किया जाता है, जैसे फ़ैक्टोरियल, फिबोनैचि सीरीज़, आदि।