-6

私はJavaスタックを研究していて、この特定のシナリオでのポインターに興味があります。

オブジェクトまたはノードをスタックにプッシュすると、このポイントはどこになりますか?

  • 最初のノードの前に?
  • 最初のノードの後ろに?

誰かがこれについて私を助けたり、スタック内のノードをプッシュおよびポップするスタックを説明するデモリンクを提供したりできますか?そして、ポインタがいつでもどこを指しているかについての詳細を教えてください。

4

3 に答える 3

3

スタックの仕組みは次のとおりです。

このように要素を押し込みます。新しく追加された要素は、後入れ先出し(LIFO)構造であるため、常に「上」にあります。最上位の要素にのみアクセスできます。

スタックプッシュ

次に、これらの要素をポップできますが、ポップは常に次のように一番上の要素を削除します。

ここに画像の説明を入力してください

あなたの質問を誤解した場合は、コメントを書いてください。この投稿を削除します。

于 2012-07-29T09:49:20.343 に答える
2

私はJavaスタックを研究していますが、これに関するポインタに興味があります。

Javaは仮想マシンを使用します。バイトコードは実際のマシンで実行する必要があります。つまり、仮想的な意味では、スタックを使用して値をプッシュおよびポップオフしますが、これは複数のレジスタ(8〜16など)を使用するネイティブコードにコンパイルされ、選択的に使用されるCPUスタックもあります(そのまま)もっとゆっくり)

Javaのスタックや、Javaが仮想的にどのように機能するか、またはJavaがネイティブコードにどのように変換されるかについての実際の知識がなくても、経験豊富なJava開発者になることができます。初心者として、知っておくと便利なことが他にもあるかもしれません。;)

于 2012-07-29T09:58:23.667 に答える
1

残念ながら、この質問にはJavaの観点から答えることはできません。

Java仮想マシンには概念的なスタックがあります。1つはスレッドのローカルフレーム用で、もう1つは式を評価するときのオペランド用です。ただし、これらは概念的なスタックであり、ネイティブコードの「スタックポインタ」を使用して実装される場合とされない場合があります。そして確かに、ネイティブコードスタック/スタックポインタの使用は、実装の詳細です。

ネイティブスタック/スタックポインタがどのように機能するかを理解したい場合は、プロセッサアーキテクチャ、命令セット、およびアセンブリ言語プログラミングをよく読んでください。あるいは、コールスタックのウィキペディアページには、それらがどのように機能するかについてのISAニュートラルな説明があります。

于 2012-07-29T10:22:58.930 に答える