Pointers and Strings


Pointers and Strings
Characters के समूह को Computer में String कहा जाता है | Strings
के बिना कोई भी Application Software नहीं बन
सकता | यानी सभी Software
में String का प्रयोग जरुर होता है |
Character
के समूह को हम समान्यतया एक One – Dimensional Array में Store करते हैं |
हम जानते हैं कि Strings
को एक Array के रूप में Memory में Store किया जाता है और ये String तब Terminate होती है जब “C” Compiler को Null Character ‘\0’ मिलता है |
जिस
प्रकार से हम किसी int प्रकार के Array
का Base Address किसी Pointer को देकर उस Array के हर Element को Access कर सकते हैं , उसी प्रकार से किसी String
के Array का भी Base Address किसी Pointer को देकर उस Array के हर Element को Access कर
सकते हैं , उसी प्रकार से किसी String के Array का भी Base Address किसी Pointer को दिया जा सकता है और उस Pointer के प्रयोग द्वारा String
के सभी Characters को भी उसी तरह से Access
किया जा सकता है जिस तरह से हम किसी Integer प्रकार
के मानों वाले Array के सभी Elements को
Access कर सकते हैं |
इस
Concept
को समझने के लिए निम्न Program देखिये
#include<stdio.h>
main()
{
char *cp, name[]= {"RAM"};
cp = & name;
while(*cp!='\0')
{
printf("\n Character %c Stored At Address %u",*cp ,cp);
cp++;
}
getch();
}
Output
Character R Stored At Address 65522
Character A Stored At Address 65523
Character M Stored At Address 65524
इस प्रोग्राम में
*cp
एक Characters Pointer है व name नाम का एक Character Array है जिसमें RAM
Stored है | CP
= &name द्वारा Array का Base
Address Pointer CP को दिया गया है |
फिर
एक While
Loop चलाया गया है | ये
Loop
तब तक चलता है जब तक कि Program Control को Null
Character नहीं मिल जाता |printf() Function इस CP के Address पर Stored
Character को Output में Print कर देता है | पहली
बार ये Address
65522 होता है | CP
को Increment करने पर ये Address 65523
हो जाता है | इस
Address
पर Character A Stored है इसलिए Output
में A print हो जाता है |
वापस
CP
Increment हो कर 65524 हो जाता है |
इस
Location
पर M Stored है इसलिए Output में M Print हो जाता है |
CP
एक char प्रकार के अनुसार एक – एक Byte
का Increment होता है जो कि Output में देखा जा सकता है |
हम जानते हैं कि
यदि हमें किसी नाम को Computer में Store व Access करना हो तो हमें एक One –
Dimensional Array में Name कि Size को Define करना होता है कि हम अधिकतम कितने Characters
तक का नाम Store करना चाहते हैं |
कई बार हम हमारी
आवश्यकता से कम Size लेते हैं तो कई बार हम
हमारी आवश्यकता से अधिक Size ले लेते हैं |
इन
दोनों ही स्थितयों में एक समस्या है | यदि
हम आवश्यकता से कम Size का Array
Declare करते हैं तो program के Crash होने कि सम्भावना रहती है | जबकि
यदि हम आवश्यकता से अधिक Size का Array लेते हैं तो बाकी बची हुई Memory भी Array के लिए Reserved रहती है , जिसे कोई भी अन्य Program
तब तक Use नहीं कर सकता जब तक कि उस Program
को Terminate ना कर दिया जाए |
इस समस्या से
बचने के लिए हम एक Character प्रकार के Pointer
Array का प्रयोग कर सकते हैं |
जब
हम किसी नाम को किसी Pointer द्वारा Memory
में Store करते हैं तो वह नाम Memory में
उतनी जगह लेता है जितनी उसे जरुरत होती है |
किसी
String
के लिए इस प्रकार का Memory Allocation Dynamic Memory
Allocation कहा जाता है |
No comments