Header Ads

ad728
  • New Updates

    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

    Post Top Ad

    ad728

    Post Bottom Ad

    ad728