C Programming Interview Questions and Answers (C प्रोग्रामिंग इंटरव्यू प्रश्न और उत्तर)

C Programming Interview Questions and Answers (C प्रोग्रामिंग इंटरव्यू प्रश्न और उत्तर)

C प्रोग्रामिंग भाषा एक शक्तिशाली और व्यापक रूप से उपयोग की जाने वाली प्रोग्रामिंग भाषा है। इसे सिस्टम प्रोग्रामिंग और एप्लिकेशन डेवलपमेंट दोनों के लिए उपयोग किया जाता है। इस ब्लॉग पोस्ट में, हम C प्रोग्रामिंग से संबंधित कुछ महत्वपूर्ण इंटरव्यू प्रश्नों पर चर्चा करेंगे और उनके उत्तर हिंदी और अंग्रेजी दोनों में विस्तार से देंगे।

1. Why is C called a mid-level programming language? (C को मिड-लेवल प्रोग्रामिंग लैंग्वेज क्यों कहा जाता है?)

हिंदी में:
C को मिड-लेवल प्रोग्रामिंग लैंग्वेज इसलिए कहा जाता है क्योंकि यह लो-लेवल और हाई-लेवल दोनों प्रकार की प्रोग्रामिंग सुविधाएँ प्रदान करती है। C में हम मशीन लेवल प्रोग्रामिंग (जैसे पॉइंटर्स, बिट-वाइज ऑपरेशंस) कर सकते हैं, जो लो-लेवल प्रोग्रामिंग का हिस्सा है। साथ ही, इसमें हाई-लेवल भाषा की तरह स्ट्रक्चर्ड प्रोग्रामिंग और डेटा एब्स्ट्रक्शन भी किया जा सकता है।

In English:
C is called a mid-level programming language because it provides features of both low-level and high-level programming. In C, you can perform machine-level programming (like pointers, bitwise operations), which is a part of low-level programming. At the same time, it allows structured programming and data abstraction like a high-level language.

2. What are the features of the C programming language? (C प्रोग्रामिंग लैंग्वेज की विशेषताएँ क्या हैं?)

हिंदी में:
C प्रोग्रामिंग भाषा की मुख्य विशेषताएँ हैं:

  • साधारण और तेज़: C भाषा सरल और तेज़ है।
  • मशीन-स्वतंत्र: यह विभिन्न प्रकार के कंप्यूटरों पर चल सकती है।
  • पॉइंटर्स का समर्थन: C पॉइंटर्स का समर्थन करती है, जो मेमोरी एड्रेस को हैंडल करने में मदद करता है।
  • रिकर्सन: C में फ़ंक्शन रिकर्सन का समर्थन करती है।
  • स्ट्रक्चर्ड प्रोग्रामिंग: C में प्रोग्राम को मॉड्यूल्स में विभाजित किया जा सकता है।

In English:
Key features of the C programming language include:

  • Simple and Fast: C is a simple and fast language.
  • Machine-Independent: It can run on different types of computers.
  • Pointer Support: C supports pointers, which help in handling memory addresses.
  • Recursion: C supports function recursion.
  • Structured Programming: C allows the program to be divided into modules.

3. What are basic data types supported in the C Programming Language? (C प्रोग्रामिंग लैंग्वेज में समर्थित मूलभूत डेटा प्रकार कौन से हैं?)

हिंदी में:
C प्रोग्रामिंग भाषा में निम्नलिखित मूलभूत डेटा प्रकार होते हैं:

  • int: पूर्णांक (Integer)
  • float: दशमलव संख्या (Floating-point)
  • char: एकल वर्ण (Character)
  • double: अधिक सटीक दशमलव संख्या (Double precision floating-point)
  • void: शून्य डेटा प्रकार, कोई मान नहीं होता (No value)

In English:
The basic data types supported in the C programming language are:

  • int: Integer
  • float: Floating-point number
  • char: Character
  • double: Double precision floating-point number
  • void: Void data type, represents no value

4. What are tokens in C? (C में टोकन्स क्या हैं?)

हिंदी में:
C में टोकन्स सबसे छोटे तत्व होते हैं जो एक प्रोग्राम में उपयोग किए जाते हैं। C प्रोग्रामिंग में निम्नलिखित टोकन्स होते हैं:

  • Keywords (कीवर्ड्स)
  • Identifiers (पहचानकर्ता)
  • Constants (स्थिरांक)
  • Strings (स्ट्रिंग्स)
  • Operators (ऑपरेटर)
  • Special symbols (विशेष प्रतीक)

In English:
Tokens in C are the smallest elements used in a program. The following tokens are used in C programming:

  • Keywords
  • Identifiers
  • Constants
  • Strings
  • Operators
  • Special symbols

5. What do you mean by the scope of the variable? (वैरिएबल के स्कोप का क्या मतलब है?)

हिंदी में:
वैरिएबल का स्कोप यह निर्धारित करता है कि वह वैरिएबल कहाँ से एक्सेस किया जा सकता है। C में स्कोप निम्नलिखित प्रकार के होते हैं:

  • Local Scope: वैरिएबल केवल उस फ़ंक्शन के भीतर एक्सेस किया जा सकता है जहाँ इसे परिभाषित किया गया है।
  • Global Scope: वैरिएबल पूरे प्रोग्राम में एक्सेस किया जा सकता है।

In English:
The scope of a variable determines where the variable can be accessed. In C, there are the following types of scopes:

  • Local Scope: The variable can only be accessed within the function where it is defined.
  • Global Scope: The variable can be accessed throughout the program.

6. What are preprocessor directives in C? (C में प्रीप्रोसेसर निर्देश क्या हैं?)

हिंदी में:
C में प्रीप्रोसेसर निर्देश वे निर्देश होते हैं जो प्रोग्राम के संकलन (compilation) से पहले प्रोसेस किए जाते हैं। उदाहरण: #include, #define, #ifdef, आदि। यह निर्देश मुख्यतः कोड को मैनेज करने और प्रोग्राम में सुधार करने के लिए उपयोग होते हैं।

In English:
Preprocessor directives in C are instructions that are processed before the actual compilation of the program. Examples include #include, #define, #ifdef, etc. These directives are mainly used for managing code and enhancing the program.

7. What is the use of static variables in C? (C में स्टैटिक वैरिएबल्स का उपयोग क्या है?)

हिंदी में:
स्टैटिक वैरिएबल्स उन वैरिएबल्स को संदर्भित करती हैं जिनकी वैल्यू पूरे प्रोग्राम के दौरान बनी रहती है। जब एक फ़ंक्शन में स्टैटिक वैरिएबल्स का उपयोग किया जाता है, तो वे अपनी पिछली स्थिति को बनाए रखते हैं और फ़ंक्शन के समाप्त होने के बाद भी अपने वैल्यू को संरक्षित करते हैं।

In English:
Static variables refer to those variables whose value persists throughout the lifetime of the program. When used within a function, static variables retain their previous state and preserve their value even after the function exits.

8. What is the difference between malloc() and calloc() in the C programming language? (C प्रोग्रामिंग भाषा में malloc() और calloc() में क्या अंतर है?)

हिंदी में:

  • malloc() (Memory Allocation): यह एक एकल ब्लॉक में निर्दिष्ट बाइट्स की संख्या के लिए मेमोरी आवंटित करता है। इसमें आवंटित मेमोरी को प्रारंभिक नहीं किया जाता है।
  • calloc() (Contiguous Allocation): यह एक से अधिक ब्लॉक में मेमोरी आवंटित करता है और सभी ब्लॉक्स को शून्य से प्रारंभिक करता है। इसमें आवंटित मेमोरी को शून्य से प्रारंभिक किया जाता है।

In English:

  • malloc() (Memory Allocation): Allocates memory for a specified number of bytes in a single block. The allocated memory is not initialized.
  • calloc() (Contiguous Allocation): Allocates memory in multiple blocks and initializes all blocks to zero. The allocated memory is initialized to zero.

9. What do you mean by dangling pointers and how are dangling pointers different from memory leaks in C programming? (डैंगलिंग पॉइंटर्स से क्या मतलब है और डैंगलिंग पॉइंटर्स और मेमोरी लीक्स में क्या अंतर है?)

हिंदी में:
डैंगलिंग पॉइंटर: जब एक पॉइंटर उस मेमोरी को संदर्भित करता है जो पहले से फ्री कर दी गई हो, तो वह डैंगलिंग पॉइंटर कहलाता है।
मेमोरी लीक: जब प्रोग्राम मेमोरी आवंटित करता है लेकिन उसे फ्री नहीं करता है, तो यह मेमोरी लीक कहलाता है। इसमें अप्रयुक्त मेमोरी सिस्टम से नहीं छोड़ी जाती।

In English:
Dangling Pointer: A pointer that references memory that has already been freed is called a dangling pointer.
Memory Leak: When a program allocates memory but does not free it, it results in a memory leak. Unused memory is not released back to the system.

10. Write a program to convert a number to a string with the help of sprintf() function in the C library. (C लाइब्रेरी में sprintf() फ़ंक्शन की सहायता से किसी संख्या को स्ट्रिंग में कन्वर्ट करने के लिए प्रोग्राम लिखें।)

हिंदी में:

#include <stdio.h>

int main() {
    int num = 1234;
    char str[10];
    sprintf(str, "%d", num);
    printf("Converted string: %s\n", str);
    return 0;
}

यह प्रोग्राम sprintf() का उपयोग करके संख्या को स्ट्रिंग में कन्वर्ट करता है।

11. Why is C known as a mother language? (C को मदर लैंग्वेज क्यों कहा जाता है?)

हिंदी में:
C को मदर लैंग्वेज इसलिए कहा जाता है क्योंकि यह आधुनिक प्रोग्रामिंग भाषाओं की नींव है। C के आधार पर कई अन्य भाषाओं का निर्माण किया गया है, जैसे C++, Java, और Python। यह सिस्टम प्रोग्रामिंग और कंपाइलर डेवलपमेंट के लिए एक मूलभूत भाषा है।

In English:
C is known as the mother language because it forms the foundation of modern programming languages. Many other languages, such as C++, Java, and Python, have been developed based on C. It is a fundamental language for system programming and compiler development.

12. What is the main advantage of using macro expression instead of function? (मैक्रो एक्सप्रेशन का उपयोग करने का मुख्य लाभ क्या है?)

हिंदी में:
मैक्रो एक्सप्रेशन का उपयोग करने का मुख्य लाभ यह है कि यह रनटाइम पर किसी फ़ंक्शन को कॉल करने के बजाय कोड को इनलाइन कर देता है, जिससे कोड की निष्पादन गति बढ़ जाती है। हालांकि, इसका दुरुपयोग प्रोग्राम के आकार को बढ़ा सकता है।

In English:
The main advantage of using a macro expression instead of a function is that it inlines the code rather than calling a function at runtime, which can increase execution speed. However, misuse of macros can lead to increased program size.

13. Define pointer. (पॉइंटर को परिभाषित करें।)

हिंदी में:
पॉइंटर एक वैरिएबल है जो किसी अन्य वैरिएबल के मेमोरी एड्रेस को स्टोर करता है। इसे इंडायरेक्शन ऑपरेटर * के माध्यम से एक्सेस किया जाता है।

In English:
A pointer is a variable that stores the memory address of another variable. It is accessed using the indirection operator *.

14. Explain what “pointer to pointer” means. (“पॉइंटर टू पॉइंटर” का क्या मतलब है?)

हिंदी में:
“पॉइंटर टू पॉइंटर” का मतलब है कि एक पॉइंटर दूसरे पॉइंटर का एड्रेस स्टोर करता है। इसे डबल इंडायरेक्शन ऑपरेटर ** के माध्यम से एक्सेस किया जाता है।

In English:
“Pointer to pointer” means that one pointer stores the address of another pointer. It is accessed using the double indirection operator **.

15. Does C support function overloading? (क्या C में फ़ंक्शन ओवरलोडिंग का समर्थन है?)

हिंदी में:
नहीं, C में फ़ंक्शन ओवरलोडिंग का समर्थन नहीं है। C में एक ही नाम के दो या अधिक फ़ंक्शन नहीं हो सकते।

In English:
No, C does not support function overloading. You cannot have two or more functions with the same name in C.

16. Define preprocessor. (प्रीप्रोसेसर को परिभाषित करें।)

हिंदी में:
प्रीप्रोसेसर एक टूल है जो C प्रोग्राम की संकलन प्रक्रिया से पहले निर्देशों को प्रोसेस करता है। यह मुख्यतः मैक्रो, हेडर फाइल्स, और कंडीशनल कंपाइलिंग के लिए उपयोग होता है।

In English:
The preprocessor is a tool that processes instructions before the compilation of a C program. It is mainly used for macros, header files, and conditional compilation.

17. List the most important features of C. (C की सबसे महत्वपूर्ण विशेषताएँ सूचीबद्ध करें।)

हिंदी में:
C की सबसे महत्वपूर्ण विशेषताएँ:

  • पोर्टेबिलिटी (Portability)
  • रिच लाइब्रेरी (Rich Library)
  • मॉड्यूलरिटी (Modularity)
  • रिकर्सन (Recursion)
  • मेमोरी मैनेजमेंट (Memory Management)

In English:
The most important features of C include:

  • Portability
  • Rich Library
  • Modularity
  • Recursion
  • Memory Management

18. What is the difference between static int and global int declaration? (स्टैटिक int और ग्लोबल int डिक्लेरेशन में क्या अंतर है?)

हिंदी में:

  • स्टैटिक int: यह केवल उस फ़ंक्शन या ब्लॉक के भीतर मान्य होता है जहाँ इसे परिभाषित किया गया है, और इसकी वैल्यू फ़ंक्शन के बीच बनी रहती है।
  • ग्लोबल int: यह पूरे प्रोग्राम में किसी भी फ़ंक्शन से एक्सेस किया जा सकता है।

In English:

  • Static int: It is only valid within the function or block where it is defined, and its value persists across function calls.
  • Global int: It can be accessed from any function throughout the program.

19. Explain what is the difference between char const* p and const char* p. (char const* p और const char* p में क्या अंतर है?)

हिंदी में:
char const* p और const char* p में कोई अंतर नहीं है; दोनों का अर्थ एक ही है। यह इंगित करता है कि प्वाइंट किया गया चर (character) कॉन्स्टेंट है और इसे संशोधित नहीं किया जा सकता।

In English:
There is no difference between char const* p and const char* p; both mean the same thing. It indicates that the pointed-to character is constant and cannot be modified.

20. Explain why C is a mid-level language. (C को मिड-लेवल भाषा क्यों कहा जाता है?)

हिंदी में:
C को मिड-लेवल भाषा कहा जाता है क्योंकि इसमें लो-लेवल और हाई-लेवल दोनों सुविधाएँ उपलब्ध हैं। यह हार्डवेयर से करीबी इंटरैक्शन और उच्च-स्तरीय स्ट्रक्चर्ड प्रोग्रामिंग दोनों की अनुमति देता है।

In English:
C is called a mid-level language because it provides both low-level and high-level features. It allows close interaction with hardware as well as high-level structured programming.

21. Explain how scanf() and printf() functions are used. (scanf() और printf() फ़ंक्शन का उपयोग कैसे किया जाता है?)

हिंदी में:
scanf() और printf() C भाषा के स्टैंडर्ड इनपुट-आउटपुट फ़ंक्शंस हैं।

  • scanf() का उपयोग यूज़र से इनपुट लेने के लिए किया जाता है। यह फॉर्मेट स्पेसिफायर का उपयोग करके विभिन्न प्रकार के डेटा (जैसे integer, float, char) को पढ़ता है।
    उदाहरण:

    int a;
    scanf("%d", &a);
    

    इस कोड में, यूज़र द्वारा एंटर किया गया इनपुट वैल्यू a में स्टोर होता है।

  • printf() का उपयोग स्क्रीन पर आउटपुट प्रदर्शित करने के लिए किया जाता है। यह भी फॉर्मेट स्पेसिफायर का उपयोग करता है। उदाहरण:
    int a = 10;
    printf("Value of a is %d", a);
    

    इस कोड में, “Value of a is 10” स्क्रीन पर प्रदर्शित होगा।

In English:
scanf() and printf() are standard input-output functions in C language.

  • scanf() is used to take input from the user. It reads various types of data (such as integer, float, char) using format specifiers. Example:
    int a;
    scanf("%d", &a);
    

    In this code, the value entered by the user is stored in a.

  • printf() is used to display output on the screen. It also uses format specifiers. Example:
    int a = 10;
    printf("Value of a is %d", a);
    
    • This code will display “Value of a is 10” on the screen.

22. What are format specifiers? (फॉर्मेट स्पेसिफायर क्या हैं?)

हिंदी में:
फॉर्मेट स्पेसिफायर एक प्रकार के प्लेसहोल्डर होते हैं जो बताते हैं कि डेटा को कैसे इनपुट या आउटपुट करना है। यह % चिन्ह के साथ शुरू होते हैं और डेटा के प्रकार के अनुसार अलग-अलग होते हैं, जैसे %d इंटीजर के लिए, %f फ्लोट के लिए।

In English:
Format specifiers are placeholders that indicate how to input or output data. They start with the % symbol and vary depending on the data type, such as %d for integers, %f for floats.

23. List some format specifiers for scanning and printing purposes. (स्कैनिंग और प्रिंटिंग के लिए कुछ फॉर्मेट स्पेसिफायर सूचीबद्ध करें।)

हिंदी में:

  • %d: इंटीजर के लिए (Integer)
  • %f: फ्लोटिंग पॉइंट नंबर के लिए (Floating-point number)
  • %c: एकल वर्ण के लिए (Character)
  • %s: स्ट्रिंग के लिए (String)
  • %lf: डबल फ्लोट के लिए (Double floating-point number)
  • %x: हेक्साडेसिमल इंटीजर के लिए (Hexadecimal integer)

In English:

  • %d: For integers
  • %f: For floating-point numbers
  • %c: For characters
  • %s: For strings
  • %lf: For double floating-point numbers
  • %x: For hexadecimal integers

24. Define recursion. (रिकर्सन को परिभाषित करें।)

हिंदी में:
रिकर्सन वह प्रक्रिया है जिसमें एक फ़ंक्शन स्वयं को कॉल करता है। यह आमतौर पर तब उपयोग किया जाता है जब किसी समस्या को छोटे उप-समस्याओं में विभाजित किया जा सकता है और उन्हीं उप-समस्याओं को हल करके मूल समस्या का समाधान किया जाता है।

In English:
Recursion is a process in which a function calls itself. It is often used when a problem can be divided into smaller sub-problems, and solving those sub-problems helps in solving the original problem.

25. Define typecasting. (टाइपकास्टिंग को परिभाषित करें।)

हिंदी में:
टाइपकास्टिंग वह प्रक्रिया है जिसमें एक डेटा प्रकार को दूसरे डेटा प्रकार में परिवर्तित किया जाता है। C में टाइपकास्टिंग का उपयोग तब किया जाता है जब हमें एक वैरिएबल को एक प्रकार से दूसरे प्रकार में बदलने की आवश्यकता होती है।

In English:
Typecasting is the process of converting one data type into another data type. In C, typecasting is used when we need to convert a variable from one type to another.

26. What are enumerations? (एन्यूमरेशन क्या हैं?)

हिंदी में:
एन्यूमरेशन (Enumeration) एक डेटा प्रकार है जो कुछ निश्चित नामांकित मानों का एक सेट परिभाषित करता है। यह कोड को अधिक पठनीय और प्रबंधनीय बनाने में मदद करता है।

In English:
Enumeration is a data type that defines a set of named values. It helps in making the code more readable and manageable.

27. Explain what a built-in function is. (बिल्ट-इन फ़ंक्शन क्या होता है?)

हिंदी में:
बिल्ट-इन फ़ंक्शन वह फ़ंक्शन होते हैं जो C भाषा में पहले से परिभाषित होते हैं और प्रोग्रामर को सामान्य कार्यों को आसानी से पूरा करने में मदद करते हैं। जैसे कि printf(), scanf(), strlen() आदि।

In English:
Built-in functions are functions that are pre-defined in the C language and help programmers perform common tasks easily. Examples include printf(), scanf(), strlen(), etc.

28. Name some common built-in functions. (कुछ सामान्य बिल्ट-इन फ़ंक्शन्स के नाम बताएं।)

हिंदी में:

  • printf()
  • scanf()
  • strlen()
  • strcpy()
  • malloc()
  • free()
  • exit()
  • sqrt()

In English:

  • printf()
  • scanf()
  • strlen()
  • strcpy()
  • malloc()
  • free()
  • exit()
  • sqrt()

29. Explain what the #line is used for. (लाइन #line का उपयोग किसलिए किया जाता है?)

हिंदी में:
#line प्रीप्रोसेसर निर्देश का उपयोग C में कोड में लाइनों की संख्या को मैन्युअल रूप से सेट करने के लिए किया जाता है। यह मुख्य रूप से डिबगिंग और एरर रिपोर्टिंग में मदद करने के लिए उपयोग किया जाता है।

In English:
The #line preprocessor directive is used to manually set the line number in the C code. It is mainly used to help with debugging and error reporting.

30. Explain when you would use the register storage specifier. (आप रजिस्टर स्टोरेज स्पेसिफायर का उपयोग कब करेंगे?)

हिंदी में:
रजिस्टर स्टोरेज स्पेसिफायर का उपयोग तब किया जाता है जब आपको बार-बार उपयोग किए जाने वाले वैरिएबल्स के लिए तेज़ एक्सेस की आवश्यकता होती है। यह वैरिएबल्स को CPU के रजिस्टर में स्टोर करने का सुझाव देता है, जिससे एक्सेस स्पीड बढ़ जाती है।

In English:
The register storage specifier is used when you need faster access to frequently used variables. It suggests storing the variables in the CPU’s register, increasing access speed.

31. Explain what a token is. (टोकन क्या है?)

हिंदी में:
C में, टोकन प्रोग्राम के सबसे छोटे घटक होते हैं। यह C प्रोग्रामिंग के मूल निर्माण ब्लॉक्स हैं, जैसे कि कीवर्ड्स, पहचानकर्ता, कॉन्स्टेंट्स, स्ट्रिंग्स, ऑपरेटर, और विशेष प्रतीक।

In English:
In C, tokens are the smallest components of a program. They are the basic building blocks of C programming, such as keywords, identifiers, constants, strings, operators, and special symbols.

32. List the six token types in C. (C में छह टोकन प्रकारों की सूची बनाएं।)

हिंदी में:
C में छह प्रकार के टोकन्स होते हैं:

  1. कीवर्ड्स (Keywords)
  2. पहचानकर्ता (Identifiers)
  3. कॉन्स्टेंट्स (Constants)
  4. स्ट्रिंग्स (Strings)
  5. ऑपरेटर (Operators)
  6. विशेष प्रतीक (Special symbols)

In English:
There are six types of tokens in C:

  1. Keywords
  2. Identifiers
  3. Constants
  4. Strings
  5. Operators
  6. Special symbols

33. What is a near pointer? (नियर पॉइंटर क्या है?)

हिंदी में:
नियर पॉइंटर एक 16-बिट पॉइंटर होता है जो मेमोरी के वर्तमान सेगमेंट के भीतर के एड्रेस को संदर्भित करता है। यह केवल 64KB मेमोरी को एक्सेस कर सकता है।

In English:
A near pointer is a 16-bit pointer that refers to an address within the current segment of memory. It can only access up to 64KB of memory.

34. What is a far pointer? (फार पॉइंटर क्या है?)

हिंदी में:
फार पॉइंटर एक 32-बिट पॉइंटर होता है जो पूरे मेमोरी स्पेस में किसी भी लोकेशन को एक्सेस कर सकता है। यह एक सेगमेंट और ऑफसेट के संयोजन के रूप में मेमोरी को संदर्भित करता है।

In English:
A far pointer is a 32-bit pointer that can access any location in the entire memory space. It refers to memory as a combination of a segment and an offset.

35. What is a huge pointer? (ह्यूज पॉइंटर क्या है?)

हिंदी में:
ह्यूज पॉइंटर भी एक 32-बिट पॉइंटर होता है, लेकिन यह सेगमेंट को भी समायोजित कर सकता है, जिससे यह फार पॉइंटर की तुलना में अधिक लचीला हो जाता है। ह्यूज पॉइंटर सेगमेंटेशन के बिना पूरे मेमोरी स्पेस को एक्सेस कर सकता है।

In English:
A huge pointer is also a 32-bit pointer, but it can adjust the segment, making it more flexible than a far pointer. A huge pointer can access the entire memory space without segmentation.

36. Explain what a memory leak is. (मेमोरी लीक क्या है?)

हिंदी में:
मेमोरी लीक तब होती है जब किसी प्रोग्राम में डायनामिक मेमोरी आवंटित की जाती है लेकिन उसे फ्री नहीं किया जाता। इसका परिणाम अप्रयुक्त मेमोरी का संचय होता है, जो सिस्टम की मेमोरी को खाली नहीं करता, जिससे प्रोग्राम की परफॉर्मेंस में कमी आ सकती है।

In English:
A memory leak occurs when a program allocates dynamic memory but does not free it. This results in the accumulation of unused memory, which is not released back to the system, potentially degrading the program’s performance.

37. How can you avoid memory leaks? (मेमोरी लीक से कैसे बचा जा सकता है?)

हिंदी में:
मेमोरी लीक से बचने के लिए:

  • प्रत्येक malloc() या calloc() के लिए, free() का उपयोग करके मेमोरी को रिलीज़ करें।
  • डायनामिक मेमोरी आवंटित करते समय ध्यान से कोड लिखें।
  • मेमोरी उपयोग की निगरानी के लिए टूल्स का उपयोग करें, जैसे कि Valgrind।
  • आवंटित मेमोरी को सही समय पर फ्री करना सुनिश्चित करें।

In English:
To avoid memory leaks:

  • For every malloc() or calloc(), use free() to release the memory.
  • Write code carefully when allocating dynamic memory.
  • Use tools like Valgrind to monitor memory usage.
  • Ensure that allocated memory is freed at the appropriate time.

38. What is the default parameter passing mechanism in C? (C में डिफ़ॉल्ट पैरामीटर पासिंग मेकेनिज्म क्या है?)

हिंदी में:
C में डिफ़ॉल्ट पैरामीटर पासिंग मेकेनिज्म Call by Value है। इसका मतलब है कि फ़ंक्शन को कॉल करते समय पैरामीटर का एक कॉपी पास किया जाता है। इसका अर्थ है कि फ़ंक्शन के भीतर किए गए किसी भी बदलाव का प्रभाव मूल वैरिएबल पर नहीं पड़ता है।

In English:
The default parameter passing mechanism in C is Call by Value. This means that a copy of the parameter is passed when calling a function. Therefore, any changes made inside the function do not affect the original variable.

39. Can you explain the difference between calloc() and malloc()? (क्या आप calloc() और malloc() के बीच अंतर समझा सकते हैं?)

हिंदी में:

  • malloc() (Memory Allocation): यह फ़ंक्शन एक एकल ब्लॉक में निर्दिष्ट बाइट्स की संख्या के लिए मेमोरी आवंटित करता है। इसमें आवंटित मेमोरी को प्रारंभिक नहीं किया जाता है।
  • calloc() (Contiguous Allocation): यह फ़ंक्शन एक से अधिक ब्लॉक्स में मेमोरी आवंटित करता है और सभी ब्लॉक्स को शून्य से प्रारंभिक करता है। इसमें आवंटित मेमोरी को शून्य से प्रारंभिक किया जाता है।

In English:

  • malloc() (Memory Allocation): This function allocates memory for a specified number of bytes in a single block. The allocated memory is not initialized.
  • calloc() (Contiguous Allocation): This function allocates memory in multiple blocks and initializes all blocks to zero. The allocated memory is initialized to zero.

40. If the same name has been given to a local and global variable, can you access the global variable from a local variable defined block? (यदि किसी लोकल और ग्लोबल वैरिएबल को एक ही नाम दिया गया है, तो क्या आप एक लोकल वैरिएबल परिभाषित ब्लॉक से ग्लोबल वैरिएबल को एक्सेस कर सकते हैं?)

हिंदी में:
हाँ, आप एक लोकल वैरिएबल परिभाषित ब्लॉक से ग्लोबल वैरिएबल को एक्सेस कर सकते हैं, लेकिन इसके लिए आपको ग्लोबल वैरिएबल का उपयोग करने के लिए :: ऑपरेटर या extern कीवर्ड का उपयोग करना होगा। हालांकि, C में :: ऑपरेटर नहीं होता है, इसलिए आप ग्लोबल वैरिएबल को एक्सेस करने के लिए एक अन्य तरीका अपना सकते हैं। इसके लिए आप ग्लोबल वैरिएबल का एक्सेस करने के लिए फंक्शन के बाहर इसका उपयोग कर सकते हैं या नाम का विशिष्टता जोड़ने के लिए extern कीवर्ड का उपयोग कर सकते हैं।

In English:
Yes, you can access a global variable from within a local variable-defined block, but you need to use the :: operator or the extern keyword to refer to the global variable. However, in C, there is no :: operator, so you would typically access the global variable outside the function or use the extern keyword to refer to it from within the function.

41. Define dangling pointers. (डैंगलिंग पॉइंटर्स को परिभाषित करें।)

हिंदी में:
डैंगलिंग पॉइंटर वह पॉइंटर होता है जो उस मेमोरी लोकेशन को संदर्भित करता है जिसे पहले ही फ्री किया जा चुका है। इसका मतलब है कि पॉइंटर के पास अभी भी मेमोरी का पता है, लेकिन उस मेमोरी को अब किसी अन्य उद्देश्य के लिए पुनः आवंटित किया जा सकता है, जिससे अज्ञात व्यवहार हो सकता है।

In English:
A dangling pointer is a pointer that refers to a memory location that has already been freed. This means that the pointer still holds the memory address, but that memory might be reallocated for another purpose, leading to undefined behavior.

42. How do dangling pointers differ from memory leaks? (डैंगलिंग पॉइंटर्स और मेमोरी लीक में क्या अंतर है?)

हिंदी में:

  • डैंगलिंग पॉइंटर: यह तब होता है जब एक पॉइंटर एक मेमोरी लोकेशन को संदर्भित करता है जो पहले ही फ्री हो चुका है। इसका परिणाम यह हो सकता है कि पॉइंटर द्वारा संदर्भित मेमोरी स्थान का कोई वैध उपयोग नहीं रह जाता।
  • मेमोरी लीक: यह तब होता है जब प्रोग्राम ने मेमोरी आवंटित की है लेकिन उसे फ्री नहीं किया गया है। इसका परिणाम अप्रयुक्त मेमोरी का संचय होता है, जो सिस्टम की मेमोरी को खाली नहीं करता है।

In English:

  • Dangling Pointer: This occurs when a pointer refers to a memory location that has already been freed. The result is that the memory location referenced by the pointer is no longer valid.
  • Memory Leak: This occurs when a program allocates memory but does not free it. The result is the accumulation of unused memory that is not released back to the system.

43. Define typedef. (typedef को परिभाषित करें।)

हिंदी में:
typedef C में एक कीवर्ड है जिसका उपयोग किसी मौजूदा डेटा प्रकार को एक नया नाम (अर्थात टाइप का डिफिनेशन) देने के लिए किया जाता है। यह कोड को अधिक पठनीय और उपयोगकर्ता के लिए अनुकूल बनाता है।

In English:
typedef is a keyword in C that is used to give a new name (i.e., type definition) to an existing data type. This makes the code more readable and user-friendly.

44. List the types of decision control statements in C. (C में निर्णय नियंत्रण वक्तव्यों के प्रकारों की सूची बनाएं।)

हिंदी में:
C में निर्णय नियंत्रण वक्तव्यों के प्रकार निम्नलिखित हैं:

  1. if स्टेटमेंट
  2. if-else स्टेटमेंट
  3. nested if स्टेटमेंट
  4. switch स्टेटमेंट
  5. conditional (ternary) operator (? :)

In English:
The types of decision control statements in C are:

  1. if statement
  2. if-else statement
  3. nested if statement
  4. switch statement
  5. conditional (ternary) operator (? :)

45. Which is better, #define or enum? (#define या enum में कौन बेहतर है?)

हिंदी में:
enum बेहतर है क्योंकि यह टाइप-सुरक्षित (type-safe) होता है और डिबगिंग में आसान होता है। #define केवल एक टेक्स्ट रिप्लेसमेंट है, जबकि enum कॉम्पाइलर को वास्तविक डेटा प्रकार प्रदान करता है, जो बेहतर एरर चेकिंग और डिबगिंग की अनुमति देता है।

In English:
enum is better because it is type-safe and easier to debug. #define is merely a text replacement, whereas enum provides the compiler with a real data type, allowing for better error checking and debugging.

46. Define dynamic memory allocation (DMA). (डायनामिक मेमोरी आवंटन को परिभाषित करें।)

हिंदी में:
डायनामिक मेमोरी आवंटन वह प्रक्रिया है जिसमें प्रोग्राम रनटाइम के दौरान मेमोरी को आवंटित और रिलीज़ करता है। यह मेमोरी कोड के निष्पादन के दौरान आवश्यकतानुसार आवंटित की जाती है, जो कि स्टैटिक मेमोरी आवंटन के विपरीत है।

In English:
Dynamic memory allocation is the process where a program allocates and releases memory during runtime. The memory is allocated as needed during the execution of the code, unlike static memory allocation.

47. What are the advantages of dynamic memory allocation over static memory allocation? (डायनामिक मेमोरी आवंटन के स्टैटिक मेमोरी आवंटन पर क्या लाभ हैं?)

हिंदी में:
डायनामिक मेमोरी आवंटन के निम्नलिखित लाभ हैं:

  • लचीलापन (Flexibility): मेमोरी को रनटाइम पर आवश्यकतानुसार आवंटित और रिलीज़ किया जा सकता है।
  • मेमोरी उपयोग में सुधार (Improved memory utilization): केवल आवश्यकतानुसार मेमोरी का उपयोग किया जाता है, जिससे मेमोरी वेस्टेज कम होता है।
  • प्रोग्राम का आकार छोटा (Smaller program size): मेमोरी को पूर्वनिर्धारित करने की आवश्यकता नहीं होती है, जिससे प्रोग्राम का आकार छोटा होता है।

In English:
The advantages of dynamic memory allocation include:

  • Flexibility: Memory can be allocated and released as needed at runtime.
  • Improved memory utilization: Memory is used only as required, reducing wastage.
  • Smaller program size: There is no need to predetermine memory size, leading to a smaller program size.

48. List the four dynamic memory allocation library functions. (डायनामिक मेमोरी आवंटन के चार लाइब्रेरी फ़ंक्शन्स की सूची बनाएं।)

हिंदी में:

  1. malloc(): मेमोरी आवंटित करता है।
  2. calloc(): मेमोरी आवंटित करता है और उसे शून्य से प्रारंभिक करता है।
  3. realloc(): पहले से आवंटित मेमोरी के आकार को बदलता है।
  4. free(): आवंटित की गई मेमोरी को फ्री करता है।

In English:

  1. malloc(): Allocates memory.
  2. calloc(): Allocates memory and initializes it to zero.
  3. realloc(): Changes the size of previously allocated memory.
  4. free(): Frees the allocated memory.


Table of Contents

Index