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

C भाषा में पॉइंटर्स और वन-डायमेंशनल ऐरे समझें


पॉइंटर एक वेरिएबल है जो दूसरे वेरिएबल का पता स्टोर करता है।

विशेषताएं

पॉइंटर की विशेषताएं नीचे बताई गई हैं:

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

पॉइंटर घोषणा, आरंभीकरण और एक्सेस करना

निम्नलिखित स्टेटमेंट पर विचार करें:

int qty = 179;

मेमोरी में, वेरिएबल को निम्नानुसार दर्शाया जा सकता है:

C भाषा में पॉइंटर्स और वन-डायमेंशनल ऐरे समझें

पॉइंटर घोषित करना

इसका अर्थ है 'p' एक पॉइंटर वेरिएबल है जो दूसरे इंटीजर वेरिएबल का पता रखता है, जैसा कि नीचे दिए गए स्टेटमेंट में बताया गया है:

int *p;

पॉइंटर का आरंभीकरण

एड्रेस ऑपरेटर (&) का उपयोग पॉइंटर वेरिएबल को आरंभ करने के लिए किया जाता है।

उदाहरण:

int qty = 175;
int *p;
p = &qty;

C भाषा में पॉइंटर्स और वन-डायमेंशनल ऐरे समझें

पॉइंटर के माध्यम से वेरिएबल एक्सेस करना

वेरिएबल के मान को एक्सेस करने के लिए, इनडायरेक्शन ऑपरेटर (*) का उपयोग किया जाता है।

उदाहरण:

C भाषा में पॉइंटर्स और वन-डायमेंशनल ऐरे समझें

यहां, '*' को एड्रेस पर मान माना जा सकता है।

निम्नलिखित स्टेटमेंट द्वारा दो स्टेटमेंट्स समतुल्य हैं:

p = &qty;
n = *p;
n = qty

पॉइंटर्स और वन-डायमेंशनल ऐरे

  • कंपाइलर ऐरे के सभी एलिमेंट्स के लिए सतत मेमोरी लोकेशन्स एलोकेट करता है।
  • बेस एड्रेस = ऐरे के पहले एलिमेंट का एड्रेस (इंडेक्स 0)।
    • उदाहरण: int a[5] = {10, 20, 30, 40, 50};

एलिमेंट्स

पांच एलिमेंट्स निम्नानुसार स्टोर होते हैं:

C भाषा में पॉइंटर्स और वन-डायमेंशनल ऐरे समझें

  • यदि 'p' को इंटीजर पॉइंटर के रूप में घोषित किया जाता है, तो ऐरे 'a' को निम्नलिखित असाइनमेंट द्वारा इंगित किया जा सकता है:

p = a; (या) p = &a[0];
  • 'a' के हर मान को p++ का उपयोग करके एक एलिमेंट से दूसरे एलिमेंट पर जाकर एक्सेस किया जाता है। जब एक पॉइंटर इंक्रीमेंट होता है, तो इसका मान उस डेटा टाइप के आकार से बढ़ जाता है जिसकी ओर यह इंगित करता है। इस लंबाई को "स्केल फैक्टर" कहा जाता है।

  • 'p' और 'a' के बीच संबंध नीचे समझाया गया है:

p = &a[0] = 1000
p+1 = &a[1] = 1004
p+2 = &a[2] = 1008
p+3 = &a[3] = 1012
p+4 = &a[4] = 1016
  • किसी एलिमेंट का एड्रेस उसके इंडेक्स और डेटा टाइप के स्केल फैक्टर का उपयोग करके गणना की जाती है। इसे समझाने के लिए एक उदाहरण दिया गया है।

a[3] का एड्रेस = बेस एड्रेस + (3 * int का स्केल फैक्टर)
= 1000 + (3 * 4)
= 1000 + 12
= 1012
  • पॉइंटर्स का उपयोग ऐरे एलिमेंट्स को एक्सेस करने के लिए ऐरे इंडेक्सिंग के बजाय किया जा सकता है।

  • *(p+3), a[3] का मान देता है।

a[i] = *(p + i)

उदाहरण प्रोग्राम

निम्नलिखित C प्रोग्राम पॉइंटर्स और वन-डायमेंशनल ऐरे के लिए है:

#include <stdio.h>

int main() {
    int a[5];
    int *p, i;
    
    printf("5 एलिमेंट्स दर्ज करें: ");
    for (i = 0; i < 5; i++)
        scanf("%d", &a[i]);
    
    p = &a[0];
    printf("ऐरे के एलिमेंट्स हैं: ");
    for (i = 0; i < 5; i++)
        printf("%d", *(p + i));
    
    return 0;
}

आउटपुट

उपरोक्त प्रोग्राम को निष्पादित करने पर निम्नलिखित परिणाम प्राप्त होता है:

5 एलिमेंट्स दर्ज करें: 10 20 30 40 50
ऐरे के एलिमेंट्स हैं: 10 20 30 40 50

  1. C भाषा में मोनोलिथिक और मॉड्यूलर प्रोग्रामिंग की व्याख्या C भाषा में मोनोलिथिक और मॉड्यूलर प्रोग्रामिंग की व्याख्या

    मोनोलिथिक प्रोग्रामिंग और मॉड्यूलर प्रोग्रामिंग के बीच अंतर को फायदे और नुकसान के साथ नीचे विस्तार से समझाया गया है। मोनोलिथिक प्रोग्रामिंग यदि हम संपूर्ण प्रोग्राम को एक ही फ़ंक्शन में लिखते हैं, यानी मेन फ़ंक्शन में, तो आप इसे मोनोलिथिक प्रकार की प्रोग्रामिंग कहेंगे। लेकिन, संपूर्ण लॉजिक को एक ही

  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; // एड्रेस-ऑफ ऑपरेटर (&) से पता प्राप्त करें मेमोरी आर