Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C भाषा में NULL पॉइंटर और Void पॉइंटर में अंतर


मूल अंतर

NULL पॉइंटर एक मान (value) है, जबकि Void पॉइंटर एक प्रकार (type) है।

NULL पॉइंटर (Null Pointer)

  • यह दर्शाता है कि पॉइंटर किसी भी मेमोरी पते को संदर्भित नहीं कर रहा है।
  • जब किसी पॉइंटर को कोई पता असाइन नहीं किया जाता, तो उसे NULL से आरंभ करना सुरक्षित अभ्यास है।
  • हर पॉइंटर प्रकार (int*, char*, float* आदि) का अपना NULL मान होता है।

सिंटैक्स और उदाहरण

<डेटा_प्रकार> *<पॉइंटर_नाम> = NULL;

// उदाहरण
int *ptr1 = NULL;
char *ptr2 = NULL;  // '\0' गलत है, NULL सही है

NULL पॉइंटर का प्रोग्राम

#include <stdio.h>

int main() {
    int *p = NULL;  // NULL पॉइंटर
    printf("पॉइंटर का मान: %p\n", (void*)p);  // आउटपुट: 0x0 या (nil)
    return 0;
}

आउटपुट: पॉइंटर का मान: 0x0 (या कंपाइलर के अनुसार (nil))

Void पॉइंटर (Void Pointer)

  • इसे जेनेरिक पॉइंटर (Generic Pointer) भी कहते हैं।
  • इसका कोई विशिष्ट डेटा प्रकार नहीं होता (void*)।
  • यह किसी भी डेटा प्रकार के पते को संग्रहीत कर सकता है।
  • इसे डीरेफरेंस (dereference) करने से पहले उचित प्रकार में कास्ट (cast) करना पड़ता है।

सिंटैक्स और उदाहरण

void *ptr;      // Void पॉइंटर घोषणा
int a = 10;
char c = 'X';

ptr = &a;       // अब ptr इंटीजर पॉइंटर की तरह व्यवहार करता है
ptr = &c;       // अब ptr कैरेक्टर पॉइंटर की तरह व्यवहार करता है

Void पॉइंटर का प्रोग्राम

#include <stdio.h>

int main() {
    int a = 10;
    void *ptr = &a;
    
    // डीरेफरेंस करने के लिए (int*) में कास्ट करना आवश्यक
    printf("मान: %d\n", *(int*)ptr);  // आउटपुट: 10
    return 0;
}

तुलना तालिका

विशेषताNULL पॉइंटरVoid पॉइंटर
प्रकृतिमान (Value)प्रकार (Type)
उद्देश्यअमान्य/अनारंभिक पॉइंटर दर्शानाकिसी भी प्रकार का पता रखना
डीरेफरेंसिंगसंभव नहीं (क्रैश होगा)कास्ट करने के बाद संभव
उपयोगसुरक्षा जांच, प्रारंभिकरणजेनेरिक फंक्शन, मेमोरी आवंटन
  1. C भाषा में कैरेक्टर ऑपरेशन्स को समझें C भाषा में कैरेक्टर ऑपरेशन्स को समझें

    C प्रोग्रामिंग भाषा में कैरेक्टर (A-Z या a-z), अंक (0-9), व्हाइट स्पेस, या विशेष प्रतीक हो सकते हैं। घोषणा (Declaration) C प्रोग्रामिंग में कैरेक्टर ऑपरेशन्स के लिए घोषणा निम्नलिखित है: char a = A; // कैरेक्टर कॉन्स्टेंट का उपयोग करके कैरेक्टर इनपुट/आउटपुट फंक्शन्स कैरेक्टर इनपुट/आउटपुट फंक्शन्स

  1. C भाषा में यूनियन टू पॉइंटर (Union to Pointer) C भाषा में यूनियन टू पॉइंटर (Union to Pointer)

    यूनियन (Union) क्या है? यूनियन एक यूजर-डिफाइंड डेटा प्रकार है जो एक ही मेमोरी स्थान को विभिन्न डेटा प्रकारों के सदस्यों के लिए साझा करने की अनुमति देता है। किसी भी समय केवल एक सदस्य ही मान रख सकता है। यूनियन की घोषणा union यूनियन_नाम { डेटा_प्रकार सदस्य1; डेटा_प्रकार सदस्य2; // ... };

  1. C भाषा में पॉइंटर एक्सेस करने की अवधारणा C भाषा में पॉइंटर एक्सेस करने की अवधारणा

    पॉइंटर घोषणा, प्रारंभिकरण और एक्सेस 1. सामान्य चर int qty = 179; // मेमोरी में: पता 1000 पर मान 179 संग्रहीत 2. पॉइंटर घोषणा int *p; // p एक पॉइंटर चर है जो int का पता रख सकता है 3. पॉइंटर प्रारंभिकरण int qty = 175; int *p; p = &qty; // एड्रेस-ऑफ ऑपरेटर (&) से पता प्राप्त करें मेमोरी आर