ポインターとは何ですか? [複製]
-
03-07-2019 - |
質問
参照:ポインターを理解する
多くのCフレーバー言語、およびFortranなどの一部の古い言語では、ポインターを使用できます。
基本、javascript、およびactionscriptのみを実際にプログラミングしたことがある人として、Pointerが何であり、最も有用であるかを説明できますか?
ありがとう!
解決
ポインタは、聞こえるほど難しくありません。他の人がすでに言ったように、それらは他の変数のアドレスを保持する変数です。私の家への道案内をしたいとします。私の家の写真や、私の家の縮尺模型は教えません。住所を教えてあげるだけです。そこから必要なものを推測できます。
同様に、多くの言語では、値渡しと参照渡しを区別しています。基本的に、参照する必要があるたびにオブジェクト全体を渡すことを意味しますか?または、他の人が必要なものを推測できるように、アドレスを提供するだけですか?
ほとんどの現代言語は、ポインターがいつ役立つかを考え出し、最適化することでこの複雑さを隠しています。ただし、自分が何をしているのかがわかっている場合は、状況によっては手動のポインター管理がまだ役立つことがあります。
他のヒント
このウィキペディア記事では、ポインターとは何かに関する詳細な情報が提供されます。
コンピュータサイエンスでは、ポインタはプログラミング言語のデータ型で、その値はアドレスを使用してコンピュータメモリの別の場所に保存されている別の値を直接参照します(または「指す」)。ポインターが参照する値の取得または要求は、ポインターの逆参照と呼ばれます。ポインターは、一般的な参照データ型の単純な実装です(ただし、C ++で参照と呼ばれる機能とはまったく異なります)。データへのポインターは、文字列やツリー構造のトラバースなどの繰り返し操作のパフォーマンスを向上させ、関数へのポインターは、オブジェクト指向プログラミングのメソッドのバインドと、ダイナミックリンクライブラリ(DLL)へのランタイムリンクに使用されます。
ポインタは、別の変数のアドレスを含む変数です。これにより、別の変数を間接的に参照できます。たとえば、C:
// x is an integer variable
int x = 5;
// xpointer is a variable that references (points to) integer variables
int *xpointer;
// We store the address (& operator) of x into xpointer.
xpointer = &x;
// We use the dereferencing operator (*) to say that we want to work with
// the variable that xpointer references
*xpointer = 7;
if (5 == x) {
// Not true
} else if (7 == x) {
// True since we used xpointer to modify x
}
SOでは、このトピックについていくつかの議論がありました。以下のリンクでトピックに関する情報を見つけることができます。このテーマに関するSO関連の議論は他にもいくつかありますが、これらが最も関連性が高いと思います。検索ウィンドウで「ポインター[C ++]」(または「ポインター[c]」)を検索すると、さらに情報が得られます。
誰かが既に言及したように、ポインターは別の変数のアドレスを含む変数です。
主に(ランタイムで)新しいオブジェクトを作成するときに使用されます。