ポインターは、CおよびC ++プログラミングの強力な機能です。ポインタを学習する前に、Cプログラミングのアドレスについて学習しましょう。
Cのアドレス
プログラムに変数varがある場合は、&var
はメモリ内のアドレスを提供します。
scanf()
関数を使用している間アドレスを何度も使用しました。
ここでは、ユーザーが入力した値がvar変数のアドレスに格納されています。実際の例を見てみましょう。
出力
var: 5 address of var: 2686778
注:上記のコードを実行すると、おそらく別のアドレスが取得されます。
Cポインタ
ポインタ(ポインタ変数)は、値ではなくアドレスを格納するために使用される特別な変数です。
ポインタ構文
ポインタを宣言する方法は次のとおりです。
ここでは、int
タイプのポインタpを宣言しました。
あなたこれらの方法でポインタを宣言することもできます。
ポインタを宣言する別の例を見てみましょう。
ここでは、ポインタp1と正規変数p2を宣言しました。
ポインタへのアドレスの割り当て
例を見てみましょう。
ここでは、c変数に5が割り当てられています。そして、cのアドレスがpcポインタに割り当てられます。
ポインタが指すものの値を取得する
ポインタが指すものの値を取得するには、*
演算子。例:
ここでは、c
のアドレスがpcポインターに割り当てられています。そのアドレスに格納されている値を取得するために、* pcを使用しました。
注:上記の例では、pcはポインターであり、*pc
ではありません。 *pc = &c
;
ちなみに、*
は逆参照演算子と呼ばれます(ポインタを操作する場合)。ポインタを操作し、そのポインタに格納されている値を提供します。
ポインタが指す値の変更
例を見てみましょう。
cのアドレスをpcポインタに割り当てました。
次に、cの値を1に変更しました。pcとcのアドレスが同じですが、*pc
は1を与えます。
別の例を見てみましょう。
cのアドレスをPCポインタに割り当てました。
次に、*pc = 1;
<を使用して*pc
を1に変更しました。 / div>。 pcとcのアドレスは同じなので、cは1になります。
もう1つの例を見てみましょう。
最初は、 cのアドレスはpc = &c;
を使用してPCポインタに割り当てられます。cは5なので、*pc
は5になります。
次に、pc = &d;
を使用してdのアドレスがPCポインタに割り当てられます。dは-15なので、*pc
は-15になります。 。
例:ポインタの動作
動作例を見てみましょう。
出力
Address of c: 2686784Value of c: 22Address of pointer pc: 2686784Content of pointer pc: 22Address of pointer pc: 2686784Content of pointer pc: 11Address of c: 2686784Value of c: 2
プログラムの説明
-
int* pc, c;
こちら、タイプint
のポインタpcと通常の変数cが作成されます。
pcとcは最初は初期化されていないため、ポインタpcはアドレスなしまたはランダムなアドレス。また、変数cにはアドレスがありますが、ランダムなガベージ値が含まれています。 -
c = 22;
これにより、変数cに22が割り当てられます。つまり、22は変数cのメモリ位置に格納されます。 -
pc = &c;
これにより、変数cのアドレスがポインタpcに割り当てられます。 -
c = 11;
これにより変数cに11が割り当てられます。 -
*pc = 2;
これにより、ポインタpcが指すメモリ位置の値が2に変更されます。
ポインタを操作する際のよくある間違い
ポインタpcでcのアドレスをポイントします。次に、
これは初心者がしばしば混乱するポインタ構文の例です。
なぜエラーが発生しなかったのですか? int *p = &c;
?
を使用するのは、
が pと同等であるためです。 >
どちらの場合も、ポインターp
を作成しています(*p
)そしてそれに&c
を割り当てます。
この混乱を避けるために、次のようなステートメントを使用できます。
これで、ポインターとは何かがわかったので、その方法を学習します。 ポインタは、次のチュートリアルの配列に関連しています。