What is Pointer in C: जैसाकि नाम से ही स्पष्ठ हैं, Pointer किसी को Point करने का काम करता है। “C Language” में भी Pointer यही काम करता है। Pointer एक ऐसा Variable होता है जो किसी Data Item के मान को नहीं, बल्कि उस Data Item के Memory में Store होने की Memory Location या Memory Address को Store करता है।
आइये इसे समझने की कोशिश करते हैं।
Computer प्रोग्राम की Instructions का उपयोग करने के लिए Memory का प्रयोग करता है। यानी हम चाहे Key Board की एक Key ही Press करें या पूरा का पूरा प्रोग्राम Execute कर दें, Computer सर्वप्रथम उस Instruction को Memory में Store करता है।
आइये समझते हैं कि मेमोरी क्या होती है?
Computer एक Electronic Machine है। हम इसमें जो भी काम करते हैं, वे सभी Electrical Signals के उतार चढाव के रूप में Computer में Input होते हैं। इन Signals को जब किसी प्रारूप में दर्शाया जाता है, तो उस प्रारूप को Binary Digits कहते हैं।
Computer Binary बीजगिणत के अनुसार ही काम करता है। Binary गणित में केवल दो ही अंक 0 व 1 होते हैं। 0 का अर्थ है Negative या Signal नहीं है और 1 का अर्थ है Positive या Signal उपस्थित है। इन 0 व 1 को विभिन्न समूह में व्यवस्थित करके विभिन्न अंक अक्षर आदि बनाए जा सकते हैं।
चूंकि हम जितने भी अंक अक्षर व Special Symbols उपयोग में लेते हैं, उनकी कुल संख्या 256 है। (यानी A to Z तक के 26 Capital Letters, 26 Small Letters, 0 से 9 तक के कुल 10 अंक, कुछ Special Symbols जैसे कि # $ % @ & ^ * ( ) _ + आदि, व Alt के साथ प्रयोग होने वाले विभिन्न चिन्ह मिला कर कुल 256 चिन्ह) इन 256 अक्षरों के समूह में सभी आवश्यक अंक अक्षर व Special Symbols आ जाते हैं।
चूंकि Computer इन अंको, अक्षरो व Special Symbols को ज्यों का त्यों Accept नहीं कर सकता क्योंकि कम्प्यूटर केवल Signals के उतार चढाव को ही समझता है। Signals के उतार चढाव को केवल Binary रूप में ही Computer को समझाया जा सकता है और Binary अंक तो मात्र दो ही होते हैं।
फिर क्या किया जाए?
हम देखते हैं कि यदि इन दो Binary अंकों का Unique समूह बनाया जाए तो निम्न समूह बनते हैं:
00 10 01 11
यानी दो अंको को विभिन्न क्रम में रख कर हम केवल ( 22 ) चार समूह प्राप्त कर सकते हैं, जबकि हमें 256 चिन्हों के लिए Binary Digits के समूह की जरूरत है। इसलिए हम दो की बजाय तीन के समूह में इन Binary अंकों को व्यवस्थित करके देखते हैं।
000 001 011 010 100 110 111 101
अब दर्शाए अनुसार 8 समूह ( 23 ) बनते हैं जो कि हमारे वांछित चिन्हों 256 से काफी कम हैं। इसीलिए इसी क्रम को और आगे बढाया जाता है और इन्हीं दो Binary Digits को चार-चार के समूह में रखा जाए तो कुल ( 24 ) 16 समूह बनते हैं।
यदि हमं इन Binary Digits को आठ-आठ के समूह में रखें तो ( 28 ) हमारे 256 चिन्हों के लिए 256 Binary Digits के भिन्न-भिन्न समूह प्राप्त हो जाते हैं। यानी यदि क्रम से 0 व 1 को आठ बार भिन्न-भिन्न प्रकार से लिखा जाए और आठ Digits के हरेक समूह को एक चिन्ह प्रदान कर दिया जाए तो हम हमारे चिन्हों, अंको व अक्षरों को Computer में Binary Digits के रूप में भेज सकते हैं।
इन Binary Digits को Computer भाषा में Bits कहते हैं और चूंकि आठ भिन्न प्रकार की Bits से विभिन्न 256 चिन्ह प्राप्त किये जाते हैं, इसलिए Memory में भी इस प्रकार की व्यवस्था की गई है कि Input के रूप में आने वाला हर Binary Digits का समूह, आठ-आठ के समूह में ही Store हो। इन्हीं आठ-आठ Digits के समूह को Byte कहा जाता है।
यानी एक Byte में आठ Bit होते हैं। आठ Bit के होने का मतलब है कि भिन्न प्रकार के 0 व 1 का समूह Memory में Input हुआ है या आठ Signals का एक समूह Input हुआ है, जिसमें कुछ Signal में Voltage है व कुछ Signals में Voltage नहीं है।
Compute की Memory ‘Storage Cells’ का एक क्रमिक समूह होता है और हर Cell एक Byte को इंगित करता है। Memory के हर Storage Cell का एक Unique Number होता है, जिसे उस Memory या Storage Cell का Address कहते हैं। इस प्रकार से Memory के हर Storage Cell या हर Byte का एक Unique Address होता है और इस Address की कोई इकाई ( Unit ) नहीं होती है। Pointer द्वारा हम इसी Address के साथ प्रक्रिया करते हैं।
What is Pointer in C – Understanding Pointers
जब भी हम किसी Variable को Declare करते हैं तो वह Variable Memory में किसी Storage Cell में जा कर Store हो जाता है। वह Variable Memory में जिस Storage Cell पर जा कर Store होता है, उस Storage Cell का एक Unique Address होता है। Pointer द्वारा हम उस Storage Cell के Address को Access करते हैं।
इस बात को हम एक उदाहरण द्वारा समझते हैं। माना हमने एक char प्रकार का Variable character Declare किया:
char character;
तो वह Memory में निम्नानुसार एक Byte की Space Reserve करेगा:
माना इस Storage Space की Storage Cell का Address 2000 है। इसे हम निम्नानुसार प्रदर्शित कर सकते हैं।
अब यदि हम निम्न Statement द्वारा इस character में कोई अक्षर Input करें:
character = ‘x’;
तो वह अक्षर निम्नानुसार Store होगा-
यदि हमें इस Variable (character) को Access करना हो तो उसे हम दो तरीकों से Access कर सकते हैं।
- हम इस Variable (character) का नाम Use करके character में Store अक्षर को Access कर सकते हैं।
- हम इस Variable (character) के Storage Address को Use करके Character में Store अक्षर को Access कर सकते हैं।
यदि सामान्य तरीके से Variable (character) में Stored अक्षर x को प्रिंट करना हो तो हम निम्न Statement लिखते हैं:
printf(“%c”, character );
लेकिन यदि इस Variable (character) में Store अक्षर x को इसके Storage Cell की Address द्वारा Output में Print करना हो, तो ये काम हम सामान्य तरीके से नहीं कर सकते। इसके लिए हमें एक ऐसा Variable Declare करना होगा जो किसी Variable की Storage Cell का Address अपने में Store करके रखता हो। यानी उस Variable में (character Variable) की तरह कोई character Store ना होकर इस Variable (character) के Storage Cell का Address Store हो।
जब हमें ऐसा Variable Declare करना होता है, जो value के रूप में किसी अन्य Variable की Storage Cell का Address Memory में Store करता है, तो इस प्रकार के Variable को Pointer Variable कहते हैं या फिर हम ये भी कह सकते हैं, कि Pointer Variable एक ऐसा Variable होता है, जो Value के रूप में किसी अन्य Variable द्वारा Reserve की गई Space की Storage Cell का Address ग्रहण करता है। (What is Pointer in C : Wiki)
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook C Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
C Programming Language in Hindi | Page: 477 + 265 | Format: PDF