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"。
配列とポインタの違い。ポインター - 配列とポインターの違い