Header Ads

ad728
  • New Updates

    One Dimensional Array with Pointers


     

    One Dimensional Array with Pointers

    जैसा कि हम जानते हैं कि जब कोई Array Declare किया जाता है तो Array अपनी  Size Data Type के अनुसार एक ऐसी जगह पर जा कर Store होता है , जहां उस Array की Size के अनुसार सभी Array Element Memory में Store हो सकें | जैसे int b[10] करने पर Array Memory में 20 Byte की Space लेता है और Memory में ऐसी जगह पर जा कर Store होता है जहां सभी Element एक क्रम में Memory में Store हो सकें | जब हम कोई Array Declare करते हैं तो उस Array के प्रथम Element के Address को Base Address कहते हैं |  जैसे

     

    इस Declaration में Array का Base Address 1000 है | किसी Pointer में हम किसी भी Array का लेवल Base Address ही Pass करते हैं | माना एक Pointer Argument int *bp; है | इस Pointer Argument int *bp; है | इस Pointer Variable को इस Array का Base Address निम्नानुसार दिया जा सकता है

    
    
    bp = &b[0];                otherwise              bp=b;
    
    

    यहां दिया गया दूसरा Statement भी bp में Base Address Store करता है , क्योंकि किसी भी Array में प्रथम Element हमेंशा Base Address से ही Memory में Store होना शुरू होता है | यदि किसी भी Array का नाम किसी Pointer Variable को Assign किया जाए तो वास्तव में उस Pointer Variable में उस Array का Base Address ही Store होता है | जब हमें क्रम से किसी Array में मान Store करना होता है या फिर किसी Array में Stored मान को क्रम से प्राप्त करना होता है , तब हमें & Operator का प्रयोग करने की जरुरत नहीं होती है |

    लेकिन जब हमें किसी Array के किसी बीच के Element को Access करना होता है , तब हमें & Address Operator का प्रयोग करना जरुरी हो जाता है | क्योंकि Pointer Variable तो हमेंशा Scale Factor के क्रम में ही Increase या Decrease होता है |

    जब किसी Pointer को Increase किया जाता है , तब ये Pointer तुरन्त बाद की Location को , उसके Scale Factor के अनुसार Point करता है | हम किसी Array को उसके Index Number द्वारा Access करना सीख चुकें हैं | अब हम एक प्रोग्राम द्वारा किसी Array के मान को Pointer द्वारा Access करना सीखेंगे |

    
    #include<stdio.h>
    main()
    {
    	int j[]={11,23,33,22,44,55,66};
    	int k;
    	for(k=0; k<5; k++)
    	{
    		printf("\n Address =%u",&j[k]);
    		printf("\t Element =%d", j[k]);
    	}
    	getch();
    }
    
    Output
     Address =65512        Element =11
     Address =65514        Element =23
     Address =65516        Element =33
     Address =65518        Element =22
     Address =65520        Element =44
     Address =65522        Element =55
    

    अब इसी उदाहरण को हम Pointer का उपयोग करके Array के मान व Address प्राप्त करते हैं | इसके लिए निम्न प्रोग्राम होगा | इस प्रोग्राम में हमने Base Address प्राप्त करने के लिए (Address of the 0th Element ) निम्न Statement Use किया है |

    जब हम Loop में पहली बार पहुचते है तो j का Address 65512 होता है और मान 11 होता है |

    ये निम्न Statements द्वारा Output में Print होता है |

    
    printf(“\n address=%u”,l);
    printf(“\t Element=%d”,*l);
    

    जब l का मान Increment होता है तब l का मान बढ़ कर 65514 हो जाता है | इस Address पर 23 स्थित है | ये दोनों मान पुनः इसी printf() Function द्वारा Output में print हो जाते हैं | ये क्रम Array के अन्त तक चलता रहता है | इस प्रकार से हम Pointer द्वारा One Dimensional Array के दोनों को Access कर सकते हैं |

    
    #include<stdio.h>
    main()
    {
    	int j[]={11,23,33,22,44,55,66};
    	int k,*l;
    	l= &j[0];  //Assign Address of Zeroth Element
    	
    	for(k=0; k<5; k++)
    	{
    		printf("\n Address =%u", l);
    		printf("\n Element =%d",*l);
    	}
    	
    	l++; //Increment Pointer to Point next Location
    }
    
    Output
     Address =65512        Element =11
     Address =65514        Element =23
     Address =65516        Element =33
     Address =65518        Element =22
     Address =65520        Element =44
     Address =65522        Element =55
    

    जैसा कि उदाहरण में बताया कि किसी Pointer को Array का Base Address देने के लिए l=&j[0]; Statement किया गया है | यदि Pointer l को Increment  करते है तो इसका मतलब है कि हम Array के रूप में इसे निम्नानुसार भी लिख सकते हैं |

    
    l=&j[0];
    

    दूसरे Element के Address के लिए

    
    l+1=&j[1];
    

    इसी प्रकार तीसरे Element के Address के लिए

    
    l=&j[0];+2&j[2];
    

    इस प्रकार हम Pointer द्वारा भी किसी Array के किसी भी Element पर पहुच सकते हैं | क्योंकि जब किसी Pointer को Increment या Decrement किया जाता है , तब वह Pointer अपने Scale Factor के अनुसार दूसरे Element के Location को Point करता है | इसलिए हम किसी भी Array के किसी भी Element को Pointer द्वारा प्राप्त कर सकते हैं | जैसे 

    
    int j[ ] = {11,22,33,44,55,66};
    int *k=j;
    

    इस Statement से k में Array j का Base Address आ जाएगा | यदि Pointer द्वारा इस Base Address से मान को Print करना हो तो हमें निम्न Statement देना होगा |

    
    printf(“\n Value of the First Element is “, *k);
    

    यदि हम चाहें तो इसे इस प्रकार से भी लिख सकते हैं |

    
    printf(“\n Value of the First Element  is”, *(k));
    

    अब यदि हमें दूसरे Element का मान प्राप्त करना हो तो निम्नानुसार प्राप्त कर सकते हैं |

    
    printf(“\n Value of the Second is”, k+1);
    

    इसी मान को हम निम्न Statement Use करके प्राप्त कर सकते हैं |

    
    printf(“\n Value of the Base Address is”, *(k+1));
    

    इस Statement से Pointer k Array के दूसरे Element को Point करेगा इसलिए दूसरा मान Output में Print होगा | इस तरह हम किसी Array की विभन्न Locations पर Stored मान को निम्न सुत्र में लिख कर प्राप्त कर सकते हैं |

    
    *(Base Address + Index Number of Row);
    
    (1) *(j+i)                               (2) *(i+j)
    (3) j[i]                                 (4) i[j]
    
    

    निम्न प्रोग्राम द्वारा एक ही परिणाम को इस चार तरीकों से प्राप्त किया गया गया है |

    
    #include<stdio.h>
    main()
    {
      int j = {11, 22, 33, 44, 55, 66};
      int i;
      clrscr();
      for ( i = 0; i <= 5; i++ )
      {
       printf("\n Address Of %d Element is %u ", i+1, &j[i] );
       printf(" Element with Statement j [ i ] = ", j[i] );
       printf(" Element with Statement *( j + i ] = ", *(j+i));
       printf(" Element with Statement *( i + j ) = ", *( i+j));
       printf(" Element with Statement i [ j ] = ", i[j]);
      }
     getch();
    }	
    
    Output
    Address Of 2 Element is 65516
    Element with Statement j[ i ] = 22
    Element with Statement *( j + i ) = 22
    Element with Statement *( i + j ) = 22
    Element with Statement i[ j ] = 22
    Address Of 3 Element is 65518
    Element with Statement j[ i ] = 33
    Element with Statement *( j + i ) = 33
    Element with Statement *( i + j ) = 33
    Element with Statement i[ j ] = 33
    Address Of 4 Element is 65520
    Element with Statement j[ i ] = 44
    Element with Statement *( j + i ) = 44
    Element with Statement *( i + j ) = 44
    Element with Statement i[ j ] = 44
    Address Of 5 Element is 65522
    Element with Statement j[ i ] = 55
    Element with Statement *( j + i ) = 55
    Element with Statement *( i + j ) = 55
    Element with Statement i[ j ] = 55
    Address Of 6 Element is 65524
    Element with Statement j[ i ] = 66
    Element with Statement *( j + i ) = 66
    Element with Statement *( i + j ) = 66
    Element with Statement i[j] = 66
    
    
    
    
    

    No comments

    Post Top Ad

    ad728

    Post Bottom Ad

    ad728