int main()
{
int[] x={1,2,3,4,5};
printf("%d",x);
printf("%d",*x);
printf("%d",++*x);
printf("%d",*x++); //Here Lvalue required erroe is genrerated
}
Может кто-то, пожалуйста, объясните мне, что означает эта ошибка и почему она генерирует здесь
Вы не можете увеличивать массив. Попробуй это:
int main()
{
int x[]={1,2,3,4,5};
printf("%d",x);
printf("%d",*x);
printf("%d",++*x);
int *y=x;
printf("%d",*y++); //you can increment a pointer though
}
Правильный способ объявления массива в c/c++:
int x[]={1,2,3,4,5};
Ошибка заключается в том, что вы не можете использовать ++ в массиве
Вы не можете увеличивать массив.
*x++
совпадает с *(x++)
. Может быть, вы хотели (*x)++
вместо этого?
В этом утверждении:
printf("%d",*x++);
Вы применяете оператор ++
к самому массиву, что невозможно. Это дает вам ошибку lValue.
Альтернативно, в этом:
printf("%d",++*x);
Вы применяете оператор ++
к значению, на которое указывает массив (его первый элемент), который, конечно, отлично работает и просто печатает значение следующего элемента.
Пытаться
printf("%d",(*x)++);
его ок, прирост в массиве не имеет смысла. Но массив - это просто указательная переменная. Я имею в виду, если я напечатаю значение x в моей программе (это массив), он напечатает адрес [0]. Это означает, что он является указателем на [0]. Поэтому, когда я могу использовать приращение для простой переменной указателя то почему я не могу использовать операцию увеличения по указателю на массив.
int[] x
должен бытьint x[]
. Могу исправить это, прежде чем заводить качки.