C 言語ポインタの理解: 簡単な例え
この記事では、経験豊富なプログラマでも役立つ、C 言語のポインタの概念をわかりやすく説明します。実際の例を使用してポインターの意味を説明し、よくある誤解を払拭します。
家と住所の比喩
各家には住所があり、色、建築様式、種類などの独自の説明もあります。たとえ空き地であっても、通常は住所が確保されています。
John Doe があなたの家のことを知りたいと思っているとします。住所を教えるか (より効率的な方法)、家の特徴を説明することができます。しかし、家を説明するだけでは問題があります。他の家もあなたの家に似ている可能性があり、John Doe があなたの家を見つけるのが難しくなります。そして、住所があれば、彼はあなたの家を正確に見つけることができます。この単純な比喩を思い出してください。
アナログポインタ
通りはC言語環境を表し、家は変数の値を表し(変数はコンテナのようなものです)、アドレスはポインタに格納されます。家ごとに住所が 1 つだけあるのと同じように、値ごとにポインタは 1 つだけです (隣接する家でも住所が異なります)。プログラミングでは無駄を省き、1つのアドレスに1つのポインタが対応します。
ただし、同じ通りに同じ種類の複数の家が存在する可能性があり、同様に、異なる住所にある変数が同じデータ型を持つ可能性があります。各変数は、明示的に同じアドレスを参照するようにしない限り、独自の一意のメモリ アドレスを持ちます。
C でポインターを使用すると、家を記述するよりも正確な住所を指定する方が効率的であるのと同様に (特に通りに多くの家がある場合)。これが C 言語が効率的である理由の 1 つです。 Linux オペレーティング システムの設計者、リーナス トーバルズはかつてこう言いました。
私は、C よりも効率的なオペレーティング システムやマシン プログラミング言語を見たことがありません。
C コード
次の図は、C 言語でポインタを記述する方法を示しています。
*ptr
はポインタです &var
はアドレスです *ptr
は、正確なアドレスが書かれた紙のようなものです (&var
はメモリアドレスです) **ptr
はポインターへのポインターであり、次のように理解できます。アドレスが記載された紙をどこかに置く必要があり、その紙の正確な場所を知る必要があるため、独自の場所または住所。 int
は数値 (整数) を扱うことを意味します。 これは単純化した例えですが、経験豊富なプログラマでも、始めるのに良い説明になるでしょう。これが C ポインターの理解に役立つことを願っています。
面白い事実: C 言語は NASA の飛行ソフトウェアの基礎の 1 つです。
以上がC プログラミングの指針 - 素人のたとえの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。