C のアドレス演算子 &
の C のアドレス演算子 変数のアドレスを返す特別な単項演算子です。として示されます。 アンパサンド記号 (&) 。この演算子は整数値を返します。 そのオペランドのアドレス 記憶の中で。アドレス演算子 (&) は、あらゆる種類の変数、配列、文字列、関数、さらにはポインターで使用できます。
構文
アドレス演算子は通常、オペランドの接頭辞として使用されます。
& operand
どこ オペランド 変数、配列、関数、ポインタなどを指定できます。
C のアドレス演算子
アドレス演算子の例
例 1:
プログラムでアドレス演算子を使用する方法を示す簡単な C の例。
C
// C program to illustrate the use of address operator> #include> > int> main()> {> > // declaring a variable> > int> x = 100;> > > // printing the address of the variable> > printf> (> 'The address of x is %p'> , &x);> > return> 0;> }> |
出力
The address of x is 0x7fffe8f5591c
説明
変数 バツ 上記のプログラムでは値 100 が定義され、初期化されています。アドレス演算子 (&) をプレフィックスとして使用してこの変数 x のアドレスを取得し、printf() 関数を使用して出力しました。
注記: アドレスを 16 進数形式で出力するための %p 形式指定子。
通常、アドレス演算子によって返される値は、 ポインタ 変数に格納されている場合、ポインタが逆参照されて、そのアドレスに格納されている値が取得されます。
例 2:
ポインタを使用してアドレス演算子によって返されたアドレスを格納し、それを逆参照します。
C
// C program to illustrate the use of address operator with> // pointer> #include> > int> main()> {> > // integer variable> > int> x = 1;> > // integer pointer> > int> * ptrX;> > // pointer initialization with the address of x> > ptrX = &x;> > > // accessing value of x usin pointer> > printf> (> 'Value of x: %d
'> , *ptrX);> > > return> 0;> }> |
出力
Value of x: 1
例 3:
scanf() などの一部の標準関数では、変数のアドレスも必要です。このような場合、アドレス演算子を使用します。
C
// C Program to illustrate the use of address operator with> // scanf()> #include> > int> main()> {> > // defining variable> > int> number;> > > printf> (> 'Enter any number: '> );> > // using adress operator & in scanf() to get the value> > // entered by the user in the console> > scanf> (> '%d'> , &number);> > > // priting the entered number> > printf> (> 'The entered number is: %d'> , number);> > return> 0;> }> |
出力
Enter any number: 10 The entered number is: 10
C のアドレス演算子互換性のないエンティティ
C には、アドレス演算子を使用できないエンティティがいくつかあります。つまり、C でそれらのエンティティのアドレスを取得できません。そのうちのいくつかは次のとおりです。
- レジスタ変数
- ビットフィールド
- リテラル
- 式
アドレス演算子 (&) の用途:
アドレス演算子 (&) は、さまざまなエンティティのアドレスを取得するために C プログラムで広く使用されています。主要かつ最も一般的なアプリケーションのいくつかは次のとおりです。
- ポインタを関数の引数として渡す
- ポインタ演算
- データ構造の実装