Cのアドレス演算子(&)、間接演算子(*)
アドレス演算子(address operator) &
間接演算子(indirection operator) *
&はアドレスを得ることができる演算子、アドレス演算子(address operator)
&はアンパサンド(ampepsand)
*間接演算子(indirection operator)
変数がポインタ型の場合は変数に格納されているアドレスの値を取得する
単項演算子のひとつ
*p = xのように、左辺に*を使う場合は指し示す先の値を書き換えるような動作になる
使用例
code:amp-ast.c
#include <stdio.h>
int main() {
int a = 100;
int *ptr = &a;
printf("a = %d\n", a);
printf("&a = %p\n", &a);
printf("ptr = %p\n", ptr);
printf("*ptr = %d\n", *ptr);
printf("&ptr = %p\n", &ptr);
}
$ gcc amp-ast.c -Wall -Wextra && ./a.out
code:memo
a = 10
&a = 0x7ffe168e6afc
ptr = 0x7ffe168e6afc
*ptr = 100
&ptr = 0x7ffe168e6b00
参考
5 アドレス演算子(&)と間接演算子(*)
C言語のポインタ ~ & と * を使ってみる ~ | SG
ISO/IEC 9899:TC3 > 6.5.3.2 Address and indirection operators P78
関連
ポインタ
関数ポインタ
メモ
https://learn.microsoft.com/ja-jp/cpp/c-language/indirection-and-address-of-operators?view=msvc-170
#C/C++