logo

C逆参照ポインタ

私たちはすでにそれを知っています 「ポインタとは何ですか」 , ポインターは、別の変数のアドレスを格納する変数です。逆参照演算子は間接演算子とも呼ばれ、(*) で表されます。間接演算子 (*) がポインター変数とともに使用される場合、それは次のように呼ばれます。 ポインターの逆参照。 ポインタを逆参照すると、このポインタが指す変数の値が返されます。

逆参照ポインタを使用する理由は何ですか?

ポインターの逆参照が使用されるのは、次の理由があります。

  • これを使用して、ポインタが指すメモリ位置に保存されているデータにアクセスしたり、データを操作したりできます。
  • 逆参照されたポインターに適用される操作は、そのポインターが指す変数の値に直接影響します。

ポインターを逆参照する次の手順を見てみましょう。

文字列値
  • まず、ポインタが指す整数変数を宣言します。
 int x =9; 
  • ここで、整数ポインター変数を宣言します。
 int *ptr; 
  • 整数ポインタ変数の宣言後、「x」変数のアドレスをポインタ変数「ptr」に格納します。
 ptr=&x; 
  • 以下に示すように、ポインタ 'ptr' を逆参照することで、変数 'x' の値を変更できます。
 *ptr =8; 

上の行は、変数「x」の値を 9 から 8 に変更します。これは、「ptr」が「x」の位置を指しており、「ptr」の参照解除、つまり *ptr=8 によって x の値が更新されるためです。

上記の手順をすべて組み合わせてみましょう。

 #include int main() { int x=9; int *ptr; ptr=&x; *ptr=8; printf('value of x is : %d', x); return 0;} 

出力

スイッチケースJava
C逆参照ポインタ

別の例を考えてみましょう。

 #include int main() { int x=4; int y; int *ptr; ptr=&x; y=*ptr; *ptr=5; printf('The value of x is : %d',x); printf('
 The value of y is : %d',y); return 0; } 

上記のコードでは次のようになります。

  • 2 つの変数「x」と「y」を宣言します。「x」は「4」の値を保持します。
  • ポインタ変数「ptr」を宣言します。
  • ポインタ変数の宣言後、変数「x」のアドレスをポインタ「ptr」に代入します。
  • ご存知のとおり、「ptr」には「x」変数のアドレスが含まれているため、「*ptr」は「x」と同じです。
  • 「ptr」変数を使用して、「x」の値を「y」に代入します。すなわち、y=* ptr 「x」変数を使用する代わりに。

注: 私たちによると、「x」の値を変更すると、ポインター「ptr」が「x」変数のアドレスを保持しているため、「y」の値も変更されます。しかし、「y」は値「5」のローカルコピーを格納しているため、これは起こりません。

出力

C逆参照ポインタ

別のシナリオを考えてみましょう。

 #include int main() { int a=90; int *ptr1,*ptr2; ptr1=&a; ptr2=&a; *ptr1=7; *ptr2=6; printf('The value of a is : %d',a); return 0; } 

上記のコードでは次のようになります。

  • まず、変数「a」を宣言します。
  • 次に、2 つのポインター、つまり ptr1 と ptr2 を宣言します。
  • 両方のポインターには変数「a」のアドレスが含まれています。
  • 値「7」を *ptr1 に割り当て、値「6」を *ptr2 に割り当てます。 「a」の最終的な値は「6」になります。

注: 同じ位置を指すポインタが複数ある場合、1 つのポインタによって加えられた変更は別のポインタと同じになります。

出力

私のモニター画面の大きさはどれくらいですか
C逆参照ポインタ