テクノロジーの学位には、一般に学生を怖がらせる概念や科目があります。主な例のいくつかはオブジェクト指向プログラミングと微積分に関連する科目であり、別の例はより基本的な概念の抽象的なものです。この記事の主題である、主に C でのポインタなどの関数。
私たちとは異なり、コンピューターは特定の情報を「ラベル」や「名前」によって認識するのではなく、そのデータがメモリ内に配置されているアドレスによって認識します。メモリは、0 または 1 を格納する多数のビットを含む「セル」のセットと考えることができ、各セルは、マシンによって実行されるプログラムがこのデータにアクセスして操作できるように、情報を格納する特定のアドレスに関連付けられています。それ。 。
プログラムがデータを使用できるようにするには、メモリ内のそのアドレスを知る必要があることを念頭に置いて、ポインタの概念を考えることができます。ポインタは、他のデータを「指す」変数であり、操作できるように別の変数や情報のアドレスを格納することを目的としたメモリ内のスペースのようなものです。
しかしここで、ポインタは何に役立つのかという疑問が生じます。ポインタを使用すると、Malloc による動的割り当てや、より複雑なデータ構造の作成など、メモリに関連するより複雑な操作が可能になります。さらに、ベクトルの名前がポインタであるという事実など、最初は学生が気づきにくい詳細がいくつかあります。そうです、ベクトルはメモリ内の特定の位置を指す「固定ポインタ」にすぎず、必要に応じてインデックスを使用して操作します。
もう 1 つの用途は、参照によるデータの操作です。たとえば、配列をパラメータとして別の関数に渡し、渡された値やオブジェクトが単なるコピーではなく、元の配列を変更できるようにします。これは、たとえば、JavaScript で発生します。存在しません。ポインターの概念はあります (少なくとも明示的には)。例:
#includeint vet [5] ={10,20,3,4}; void somadez(int * ref){ for(int i=0;i もう 1 つのそれほど明白ではないポインタの使用法です。今回はオブジェクト指向言語用です。たとえば、動的オブジェクトを作成し、継承やポリモーフィズムの作業を容易にすることができます。
以下に C:
を使用した例を示します。#includeusing namespace std; class Animal{ public: virtual void som(); }; class Cachorro : public Animal{ public: void som(){ cout som(); //neste caso podemos usar o ponteiro para acessar métodos e atributos de uma classe derivada. return 0; }
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3