Go Academy · पाठ

पॉइंटर क्या होते हैं

Address-of ऑपरेटर, डिरेफ़रेंसिंग और nil पॉइंटर

पाठ 1, कुल 4 में से13 चरण

पॉइंटर क्या होते हैं, CoddyKit पर Go Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Go Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Go Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

मेमोरी पते

हर वैरिएबल एक मेमोरी पते पर रहता है। पॉइंटर उस पते को संग्रहीत करता है। गो में पॉइंटर का प्रकार निश्चित होता है: *int किसी int का पता रखता है।

पता-प्राप्ति ऑपरेटर &

किसी वैरिएबल का पता प्राप्त करने के लिए & का उपयोग करें:

package main
import "fmt"

func main() {
    x := 42
    p := &x
    fmt.Println(p)  // 0xc000... (address)
    fmt.Println(*p) // 42 (value at address)
}

डीरेफ़रेंसिंग *

पॉइंटर के पते पर मौजूद मान को पढ़ने या लिखने के लिए * का उपयोग करें:

package main
import "fmt"

func main() {
    n := 10
    p := &n
    *p = 99
    fmt.Println(n) // 99
}

nil पॉइंटर

पॉइंटर का शून्य मान nil होता है। nil पॉइंटर को डीरेफ़रेंस करने पर पैनिक होता है:

package main
import "fmt"

func main() {
    var p *int
    fmt.Println(p)        // <nil>
    fmt.Println(p == nil) // true
    // *p = 1 — PANIC
}

पॉइंटर प्रकार

हर पॉइंटर प्रकार उस चीज़ के अनुसार विशिष्ट होता है जिसकी ओर वह संकेत करता है:

package main
import "fmt"

func main() {
    i := 1
    s := "hello"
    pi := &i   // *int
    ps := &s   // *string
    fmt.Printf("%T %T\n", pi, ps) // *int *string
}

उपयोग से पहले nil जाँच

अपने कोड के बाहर से प्राप्त पॉइंटर को डीरेफ़रेंस करने से पहले हमेशा nil की जाँच करें:

package main
import "fmt"

func printInt(p *int) {
    if p == nil {
        fmt.Println("nil pointer")
        return
    }
    fmt.Println(*p)
}

func main() {
    v := 7
    printInt(&v)
    printInt(nil)
}

स्ट्रक्चर के पॉइंटर

पॉइंटर के माध्यम से स्ट्रक्चर फ़ील्ड तक पहुँचने के लिए वही डॉट नोटेशन उपयोग होता है—गो स्वतः डीरेफ़रेंस करता है:

package main
import "fmt"

type Point struct{ X, Y int }

func main() {
    p := &Point{1, 2}
    p.X = 10         // same as (*p).X = 10
    fmt.Println(*p)  // {10 2}
}

पॉइंटर की तुलना

दो पॉइंटर तब समान होते हैं जब वे एक ही वैरिएबल (समान पते) की ओर संकेत करते हों या दोनों nil हों:

package main
import "fmt"

func main() {
    a := 1
    p1 := &a
    p2 := &a
    p3 := new(int)
    *p3 = 1
    fmt.Println(p1 == p2) // true  — same address
    fmt.Println(p1 == p3) // false — different address
}

स्टैक और हीप

गो का कंपाइलर एस्केप विश्लेषण के माध्यम से तय करता है कि कोई वैरिएबल स्टैक पर रहेगा या हीप पर। जब आप किसी स्थानीय वैरिएबल का पता लेकर उसे लौटाते हैं, तो गो उसे अपने-आप हीप पर ले जाता है—आपको इसे मैन्युअल रूप से प्रबंधित करने की आवश्यकता नहीं होती।

पॉइंटर का उपयोग कब न करें

हर चीज़ के लिए पॉइंटर आवश्यक नहीं होता:

  • छोटे मान प्रकार (int, bool, छोटे स्ट्रक्चर) को डीरेफ़रेंस करने की अपेक्षा उनकी प्रतिलिपि बनाना सस्ता होता है
  • गोरोउटीन के बीच साझा किया गया अपरिवर्तनीय डेटा मान के रूप में सुरक्षित होता है
  • पॉइंटर का उपयोग मुख्यतः परिवर्तन या बड़े स्ट्रक्चर के लिए करें

त्वरित जाँच

& ऑपरेटर क्या लौटाता है?

पुनरावलोकन: पॉइंटर

मुख्य बातें:

  • &v पता प्राप्त करता है; *p उसे डीरेफ़रेंस करता है
  • शून्य मान nil होता है—डीरेफ़रेंस करने से पहले हमेशा जाँच करें
  • स्ट्रक्चर पॉइंटर के फ़ील्ड तक पहुँचते समय गो स्वतः डीरेफ़रेंस करता है
  • एस्केप विश्लेषण स्टैक और हीप का प्रबंधन अपने-आप करता है

अभ्यास प्रश्न

एक swap(a, b *int) फ़ंक्शन लिखें, जो पॉइंटर का उपयोग करके दो पूर्णांकों के मानों की अदला-बदली करे। इसे main से कॉल करें और पहले तथा बाद के मान प्रिंट करें।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Go सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
51
पाठ
203

अक्सर पूछे जाने वाले प्रश्न

क्या “पॉइंटर क्या होते हैं” पाठ निःशुल्क है?

हाँ — Go Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “पॉइंटर क्या होते हैं” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Go Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“पॉइंटर क्या होते हैं” में मैं क्या सीखूँगा?

Address-of ऑपरेटर, डिरेफ़रेंसिंग और nil पॉइंटर आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Go Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Go Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Go Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।

“पॉइंटर क्या होते हैं” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Go Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Go Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. पॉइंटर क्या होते हैं
  2. पॉइंटर और फ़ंक्शन
  3. विधियों पर पॉइंटर रिसीवर
  4. new() और पॉइंटर का उपयोग कब करें
← Go Academy पर वापस जाएँ