C言語では、1つの式の中で代入や判定など複数の処理を同時に行うことがあります。
これは主にコードを簡潔にし、効率的に処理を記述するためです。
ポインタの場合、変数のアドレスを代入して、そのアドレスを通じて値を操作できるようにします。
具体的には、変数 a のアドレスは &a で取得できます。
int a;
int *p;
p = &a; // aのアドレスをpに代入
*p = 10; // pが指す先(=a)の値に10を代入
このように、p = &a; でポインタ変数 p に a のアドレスを代入し、*p = 値; で a の中身を直接操作できます。
一連の処理を順番に行っても問題ありませんが、
C言語では次のように「代入と操作を1つの式にまとめる」ことも可能です。
* (p = &a) = 20; // pにaのアドレスを代入し、同時にaに20を代入
このような書き方は、処理を短くまとめたいときに使われますが、
可読性を下げる場合もあるため、状況に応じて使い分けることが大切です。

コメント