LoginSignup
0
0

More than 3 years have passed since last update.

ポインタ型変数自体にあるアドレスと、ポインタ型変数に代入されたポインタの示すアドレス

Posted at

何言ってるんだってなると思うのでコードで。
ポインタ型変数自体のアドレスっていうのに一瞬混乱した。

    // ポインタを格納する変数
    var test *int
    var test2 *int

    // ポインタを格納する変数に対して、ポインタを代入
    a := 1
    test = &a
    test2 = &a

    fmt.Printf("%#v\n", "aのポインタ(アドレス)")
    fmt.Printf("%#v\n", &a)    // (*int)(0xc000010108)


    fmt.Println("")
    fmt.Println("")
    fmt.Println("変数test")
    fmt.Println("")
    // 「ポインタを格納する変数に代入された変数」のアドレス
    fmt.Printf("%#v\n", "「ポインタを格納する変数に代入された変数」のアドレス")
    fmt.Printf("%#v\n", test)    // (*int)(0xc000010108)

    // 「ポインタを格納する変数に代入された変数」のアドレスからたどった値
    fmt.Printf("%#v\n", "「ポインタを格納する変数に代入された変数」のアドレスからたどった値")
    fmt.Printf("%#v\n", *test)    // 1

    // 「ポインタを格納する変数自体」のアドレス
    fmt.Printf("%#v\n", "「ポインタを格納する変数自体」のアドレス")
    fmt.Printf("%#v\n", &test)    // (**int)(0xc000006030)

    // 「ポインタを格納する変数自体」のアドレスからたどった値(つまり、変数に代入された値)
    fmt.Printf("%#v\n", "「ポインタを格納する変数自体」のアドレスからたどった値")
    fmt.Printf("%#v\n", *&test)    // (*int)(0xc000010108)

    fmt.Println("")
    fmt.Println("")
    fmt.Println("変数test2")
    fmt.Println("")
    // 「ポインタを格納する変数に代入された変数」のアドレス
    fmt.Printf("%#v\n", "「ポインタを格納する変数に代入された変数」のアドレス")
    fmt.Printf("%#v\n", test2)    // (*int)(0xc000010108)

    // 「ポインタを格納する変数に代入された変数」のアドレスからたどった値
    fmt.Printf("%#v\n", "「ポインタを格納する変数に代入された変数」のアドレスからたどった値")
    fmt.Printf("%#v\n", *test2)    // 1

    // 「ポインタを格納する変数自体」のアドレス
    fmt.Printf("%#v\n", "「ポインタを格納する変数自体」のアドレス")
    fmt.Printf("%#v\n", &test2)   // (**int)(0xc000006038)

    // 「ポインタを格納する変数自体」のアドレスからたどった値(つまり、変数に代入された値)
    fmt.Printf("%#v\n", "「ポインタを格納する変数自体」のアドレスからたどった値")
    fmt.Printf("%#v\n", *&test2)   // (*int)(0xc000010108)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0