Cのアドレス演算子(&)、間接演算子(*)
アドレス演算子(address operator) &
間接演算子(indirection operator) *
&はアドレスを得ることができる演算子、アドレス演算子(address operator)
&はアンパサンド(ampepsand)
*間接演算子(indirection operator)
変数がポインタ型の場合は変数に格納されているアドレスの値を取得する 単項演算子のひとつ
*p = xのように、左辺に*を使う場合は指し示す先の値を書き換えるような動作になる
code:amp-ast.c
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
参考
関連
メモ