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

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

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

पॉइंटर्स की विशेषताएँ

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

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

टू-डायमेंशनल एरे के लिए मेमोरी आवंटन:

int a[3][3] = {1,2,3,4,5,6,7,8,9};

मेमोरी में लेआउट (रो-मेजर ऑर्डर):

a[0][0] a[0][1] a[0][2]  a[1][0] a[1][1] a[1][2]  a[2][0] a[2][1] a[2][2]
  1       2       3        4       5       6        7       8       9

पॉइंटर अंकगणित के साथ एक्सेस:

a[1][2] = *(&a[0][0] + 1*3 + 2) = *(&a[0][0] + 5) = 6

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

#include <stdio.h> 

int main() {
    int a[3][3], i, j;
    int *p;
    
    printf("Enter elements of 2D array:\n");
    for(i=0; i<3; i++) {
        for(j=0; j<3; j++) {
            scanf("%d", &a[i][j]);
        }
    }
    
    p = &a[0][0];  // पहले एलिमेंट का पता
    
    printf("Elements of 2D array are:\n");
    for(i=0; i<3; i++) {
        for(j=0; j<3; j++) {
            printf("%d\t", *(p + i*3 + j));  // पॉइंटर अंकगणित
        }
        printf("\n");
    }
    return 0;
}

आउटपुट

Enter elements of 2D array:
1 2 3 4 5 6 7 8 9
Elements of 2D array are:
1   2   3
4   5   6
7   8   9

व्याख्या

  • p = &a[0][0] - पॉइंटर p पहले एलिमेंट का पता रखता है।
  • *(p + i*3 + j) - रो i, कॉलम j का एलिमेंट एक्सेस करता है।
  • फॉर्मूला: base_address + (row * COLS + col) * sizeof(int)

पॉइंटर सरणी के साथ 2D एरे

पॉइंटर्स की सरणी का उपयोग करके:

int *ptr[3];
for(i=0; i<3; i++)
    ptr[i] = a[i];  // प्रत्येक रो का बेस पता

// एक्सेस: ptr[i][j] या *(ptr[i] + j)

मुख्य बिंदु

  • 2D एरे मेमोरी में सन्निहित (contiguous) होता है।
  • पॉइंटर अंकगणित से किसी भी एलिमेंट तक O(1) एक्सेस।
  • a[i][j] आंतरिक रूप से *(*(a+i)+j) में बदल जाता है।
  1. C में पॉइंटर्स का उपयोग करके अंकगणितीय ऑपरेशन्स C में पॉइंटर्स का उपयोग करके अंकगणितीय ऑपरेशन्स

    पॉइंटर घोषणा, आरंभीकरण और एक्सेस int qty = 179; int *p; p = &qty; // p अब qty का एड्रेस रखता है पॉइंटर्स के साथ अंकगणितीय ऑपरेशन्स यदि पॉइंटर्स उचित रूप से घोषित और आरंभीकृत हैं, तो निम्न वैध हैं: वैध ऑपरेशन्स *p1 + *p2, *p1 - *p2, *p1 * *p2, *p1 / *p2 (वैल्यूज पर ऑपरेशन) p1 + 4, p2 - 2 (पॉइंटर अ

  1. C प्रोग्रामिंग भाषा में पॉइंटर्स के ऐरे को समझें C प्रोग्रामिंग भाषा में पॉइंटर्स के ऐरे को समझें

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

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

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