One Dimensional Array with Pointers
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirzPRQbhque95zU_pnXXDpshlIWKLd9i9pHNibCW-CZYwtIMoJYTWPntLlFbJyrpIsqyDlPjrlT0Y9wLR2lLmZblQEFmitFIoPIGqIVQrT-h3QwAIMdeM73lz6D0gYF0KZD7vR3ANn4jq0-sr6p6xl2D9598F3g-KpVy3aWcp38Esne4LQS2r7sdC2/w640-h480/One%20Dimensional%20Array%20with%20Pointers.jpg)
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