“lvalue required as unary ‘&’ operand” というエラーメッセージは、C 言語の参照演算子(&)が左辺値でない式に対して使用された場合に発生します。
例えば、次のようなコードを見てみましょう。
#include <stdio.h>
int main(void) {
int x = 123;
// x は変数なので、& 演算子は適用できます。
int *p = &x;
// 123 はリテラルなので、& 演算子は適用できません。
// そのため、このコードはエラーになります。
int *q = &123;
return 0;
}このコードでは、最初の int *p = &x の行では x という変数に & 演算子が適用されています。これは、& 演算子が適用できる左辺値であるため、問題ありません。
しかし、2番目の int *q = &123 の行では 123 というリテラルに & 演算子が適用されています。これは、& 演算子が適用できない左辺値であるため、このコードはエラーになります。

コメント