ホームページ  >  記事  >  バックエンド開発  >  Go ポインターの概要

Go ポインターの概要

藏色散人
藏色散人転載
2020-10-26 14:02:341967ブラウズ

次のコラムでは、golang チュートリアル コラムで Go のポインタを紹介します。困っている友人の役に立てば幸いです。

この例と組み合わせて分析します

結果:

次のベースと組み合わせます先ほどのC言語で、なぜ上記の値が現れるのかを絵で説明してください。まず、Go におけるこれら 2 つの演算子が何であるかを確認しましょう。

①次の図に示すように、

var を持つすべての結果について、 a int = 1 は値 1 を持つ変数 a を定義します。

&a は変数の値を格納するアドレス

*&a は &a へのポインタ *&a = a = 1

②すべてb

var の結果 b *int = &a

C 言語と同様 int *b = &a 整数変数を指すポインタ b を定義します。b は a

## のアドレスを指します。 #So:

b = &a = 0xc04203c1d0

&b = 0xc042058018 &b はポインタ変数 b の実アドレスであり、実行後のものです

*&b = * (&b) = b = &a = 0xc04203c1d0

*b = *&a = a = 1

③c

## によるすべての結果

#上の図に示すように:

var c **int = &b

実際には、整数ポインターを指すポインター変数を定義します

c = &b = 0xc042058018

*c = *&b = b = &a = 0xc04203c1d0

&c は、この変数の実際のアドレスです。ここに示されているのは、操作 0xc042068020

の結果です。

* &c 経験を積むと、*& は直接消去されることがわかります = c = 0xc042058018

**c 一見すると何のことかわかりませんが、実際には評価できます。変換を通じて

**c = **&b = *b = *&a = a = 1

***&*&*&*&*&c これは最初に削除できます*& **c = 1

④xxx

xx = *b = *&a = a = 1

について 上記を要約すると、次のようになります。

##&Passed 変数は、最初にアドレス値

&a を取得してアドレスを取得し、次に「* xxx address」で変数の値を取得します。アドレス、つまり a#*& は

をオフセットできます

以上がGo ポインターの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。