私はC言語を習得していないポインタを学ぶことがなかったです!ポインタはC言語の本質ですが、また、C言語の難しさ。
いわゆるポインタは、あること、メモリアドレス、いわゆるポインタ変数は、変数はメモリアドレスを格納しています。しかし、人々は、多くの場合、2つの概念を区別しませんが、一緒に混乱しました。
===== =======ポインタのコンセプト
すべてのデータは、コンピュータメモリ内に配置する必要があり、バイトの数は、異なるタイプのデータによって占有同じではない、例えば、INTバイト4は、チャーは1つのバイトを占有します。
私たちは、メモリアドレスまたはポインタのバイト数と呼ばれます。
すべてのアドレス
コードのセクションを定義する機能と、データを格納する変数をC言語では、最終的にそれらがCPUの使用のためにメモリ内に配置することができ、再利用することができます。
バイナリコードのデータがメモリに格納され、コンピュータは、記憶されたフォーマットのデータまたはコードからメモリのブロックを区別することができません。プログラムがメモリにロードされると、オペレーティングシステムは、異なる指定された権限の異なるメモリブロックを与える読んでいると、メモリブロックの実行権限をコードで、許可を読み書きしている、それだけの権限のメモリを読み取ることがブロックがデータです。
CPUのみアドレスコードとデータメモリによって達成することができ、プログラムの実施プロセスが書き込まれるCPUデータにそれを与える、プログラムが誤って間違っていない場合は、コードとデータを読み書きするアドレスを実行するCPUをお知らせしますアドレスエリアコード、メモリアクセスエラーが発生します。このメモリアクセスエラーがプログラムベンの崩壊を強制的に、切片にハードウェアとオペレーティングシステムであり、プログラマを保存する可能性はありません。
CPUがアクセスするメモリアドレスに必要がある場合、変数と関数名、変数名や関数名は、ソースファイルが実行可能プログラムにコンパイルし、リンクされているだけでニーモニックアドレス、あるのではなく、彼らがアドレスを置き換えられます。プロセスをコンパイルとリンクの重要な課題は、これらの名前のアドレスが一致する見つけることです。
変数名、関数名、名前の文字列と配列は、本質的に同じであったが、彼らはニーモニックアドレスであることに留意されたいが、コードを書くの過程で、私たちは、変数名は、データそのものを表すと考えています、関数名、およびアレイ名文字列名は、コードまたはデータブロックの最初のアドレスを示します。
=====ポインタ変数C(エッセンス)を定義して使用=====
メモリ内の1アドレスデータは変数が格納されたデータへのポインタであるならば、我々はポインタ変数を呼び出し、ポインタとなっています。
C言語では、変数は、ポインタを格納することができ、このポインタ変数は、変数と呼ばれます。値は、データのポインタ変数部品のアドレスであり、そのようなデータは、アレイ、文字列であってもよく、機能は、共通の変数または他のポインタ変数であってもよいです。
例えば:
int型、A = 100;
int型* P_A =&;
P_AはA、次いでP_Aポイント、それを初期化し、それを変数のアドレスを得ている。アドレスP_Aが必要なことに留意されたいポインタ変数の定義では、フェッチ追加するアドレス&文字によって先行されなければなりませんそれ以外の場合はそうではありません
*これは、変数が*テープがでなければならないとき、ポインタ変数、定義P1、P2であることを示す特別なシンボルです。そして、ポインタ変数であることが知られている時に割り当てのでP1、P2に、不要プラス*はありません。
*を持参しなければならないポインタ変数を定義するときに、他の言葉では、*ポインタ変数の割り当てまでの時間を取ることができません。
===== *と&のパズル
それが何を意味し、それぞれその後、*&と&* PA、PAはそれへのポインタである、あなたはint型aの変数があると?
&A:(PAに相当)変数のアドレスを取って、
*(&A)、* PAに相当するデータへのアクセスに対してアドレスを示す依然として等しいA
=======ポインタ変数演算(加算、減算及び比較演算)====
可変アドレスポインタが格納され、アドレスは、本質的に整数であり、それはおばあちゃんに部分的にポインタ変数とすることができます。例えば:加算、減算及び比較。
=== 9.4 C言語配列ポインタ(配列へのポインタ)====
アレイ(配列)は、データの一部は、アレイ要素と呼ばれ、同じタイプのデータの集合です。メモリ内のアレイ内のすべての要素は連続して配置され、それが衝撃兄弟メモリアレイで占められています。
アレイからの配列の長さと名前に、アレイを定義する、配列の名前は、配列の0番目の要素へのポインタとみなすことができます。C言語では、我々は、0番目の要素は、配列の最初のアドレスと呼ばれるアドレスであろう。
===========
探している配列の長さ:INT LEN =はsizeof(ARR)/はsizeof(INT)。
sizeof(ARR)バイトの数は、アレイを獲得占有取得し、バイトの数を取得するのsizeof(INT)は、除算結果の配列番号によって占有さは、それらが、即ち素子のアレイ、アレイの長さを含んでいることです。
============
配列へのポインタならば、我々は、ポインタの配列を呼び出します。
アレイ内の特定の要素の配列ではなく、アレイ全体、アレイの要素タイプと当該配列ポインタのタイプへのポインタです。
====== C言語の文字列のポインタ(文字列へのポインタ)=====
A.