Pointer Expressions: Addition & Subtraction of Pointers

Pointer Expressions: यह बात हमेंशा ध्‍यान रखें कि कभी भी Pointers की आपस में कोई Calculations नहीं होती है बल्कि इन Pointers में जिन Variables के Address होते हैं, उनके मानों की आपस में गणना होती है। जैसे:

        int b, c, d;

        int *bp, *cp, *dp;

        bp = b;

        cp = c;

        dp = d;

        b = 6;

        c = 8;

अब निम्न गणनाएं देखें

        d = *bp + *cp;

इस Expression से d का मान d = 6 + 8 यानी 14 होगा।

        c = c + *cp;

इस Expression से c का मान c = 8 + 8 यानी 16 हो जाएगा।

        *bp = c + b;

इस Expression से b का मान b = 8 + 6 यानी 14 हो जाएगा।

        (float)*dp = (float)c / *bp;

इस Expression से d का मान float में प्राप्त होगा और c का मान float में बदल जाएगा । उसके बाद b के मान 6 का c के मान 8 में भाग दिया जाएगा। प्राप्त मान d में Store हो जाएगा। इस प्रकार से Pointer Variable की भी Calculations होती है लेकिन उन Calculations का असर Pointer में Store Address पर नहीं होता बल्कि जिन Variables के Address Pointer में Store हैं उन Variables के मानों पर होता है।

कोष्‍ठक में लिखी गई Expressions पहले Calculate होती हैं क्योंकि कोष्‍ठक को प्राथमिकता क्रम में सर्वप्रथम रखा गया है। Pointer के साथ भाग की क्रिया करते समय विशेष ध्‍यान रखना चाहिये क्योंकि यदि * व / के बीच Space ना रखा जाए तो ये Comment देने वाले चिन्ह /* में बदल जाता है और Program सही होते हुए भी Execute नहीं होता है।

Addition and Subtraction a Number to a Pointer

इसे समझने के लिए एक उदाहरण Program देखते हैं, जिसमें हमने j का मान 10 Assign किया है और j का Address k में Store किया है। k में Stored Address 65524 है।

Pointer Expressions

जब हमने k में 3 जोडा और k का मान Print किया तो k का मान 65530 हो गया जबकि ये मान 65527 ही होना चाहिये था। ऐसा इसलिए होता है क्योंकि यहां Pointer अपने Scale Factor के अनुसार बढ रहा है।

चूंकि k में Stored Address int प्रकार का है इसलिए k का मान 3 अंक बढाने का मतलब है, k के Address को 3 अंक बढाना और k में Stored Address int प्रकार का होने से ये मान तीन के बजाय 6 बढा है, क्योंकि Pointer Scale Factor के कारण Address Data Type के अनुसार ही Increase या Decrease होता है।

इसी प्रकार से जब k में से 3 घटाया जाता है, तब वास्तव में ये Statement “C” Compiler को बताता है कि k में Stored Address से Data Type के अनुसार तीन Address पीछे जाना है। यहां int प्रकार का Data Type है। इसलिए Scale Factor के अनुसार k का मान वापस 65530 हो जाता है। इस प्रकार से किसी Pointer में Stored Address का मान Scale Factor के अनुसार घटता या बढता है। (Pointer Expressions – Wiki)

C Programming Language in Hindi - BccFalna.com ये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook  C Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

C Programming Language in Hindi | Page: 477 + 265 | Format: PDF

BUY NOW GET DEMO REVIEWS