p=numbers++
またはできないのはなぜp=++numbers
ですか?コンパイラは、「インクリメント オペランドとして左辺値が必要です」というメッセージを表示しますが、ポインターp
は左の値ではありませんか?
int main(int argc, char *argv[]){
int numbers[] = {1,2,3,4,5,6}, *p;
p=numbers++;
printf("%d ",*p);
return 0;
}
numbers++
と同等ですnumbers = numbers + 1
ただし、numbers
これは配列であり、配列のアドレスを変更することはできません。
左辺値は「左の値」を意味しません
numbers
ポインタではありません。この定義の配列とint numbers[] = {1,2,3,4,5,6}
右辺値です。だからthe compiler shows the message: "lvalue required as increment operand"
。
配列とポインタの違い。ポインター - 配列とポインターの違い