в постинкрементной ошибке Lvalue [duplicate]

0
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
}

Может кто-то, пожалуйста, объясните мне, что означает эта ошибка и почему она генерирует здесь

  • 3
    Помимо других ошибок, вы пытаетесь увеличить массив. Это не имеет смысла.
  • 3
    Поздравляю. Теперь у вас есть собственный официальный «поэтому массивы и указатели - это не один и тот же * пример кода, который бросают в лицо тем, кто утверждает, что они есть. Это не имеет значения, поскольку ваш синтаксис в любом случае неверен. int[] x должен быть int x[] . Могу исправить это, прежде чем заводить качки.
Показать ещё 1 комментарий
Теги:

5 ответов

0

Вы не можете увеличивать массив. Попробуй это:

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
}
0

Правильный способ объявления массива в c/c++:

int x[]={1,2,3,4,5};

Ошибка заключается в том, что вы не можете использовать ++ в массиве

0

Вы не можете увеличивать массив.

*x++ совпадает с *(x++). Может быть, вы хотели (*x)++ вместо этого?

0

В этом утверждении:

printf("%d",*x++); 

Вы применяете оператор ++ к самому массиву, что невозможно. Это дает вам ошибку lValue.

Альтернативно, в этом:

printf("%d",++*x);

Вы применяете оператор ++ к значению, на которое указывает массив (его первый элемент), который, конечно, отлично работает и просто печатает значение следующего элемента.

Пытаться

printf("%d",(*x)++); 
  • 0
    нормально, инкремент в массиве не имеет смысла. Но массив - это просто переменная-указатель. Я имею в виду, что если я напечатаю значение x в моей программе (которое является массивом), он напечатает адрес [0]. Это означает, что это указатель на [0]. Так что, когда я могу использовать приращение для простой переменной указателя тогда почему я не могу использовать операцию приращения на указателе массива.
  • 0
    да правда согласен с тобой
Показать ещё 1 комментарий
-1

его ок, прирост в массиве не имеет смысла. Но массив - это просто указательная переменная. Я имею в виду, если я напечатаю значение x в моей программе (это массив), он напечатает адрес [0]. Это означает, что он является указателем на [0]. Поэтому, когда я могу использовать приращение для простой переменной указателя то почему я не могу использовать операцию увеличения по указателю на массив.

  • 0
    Это потому, что массив не указатель, хотя он ведет себя как указатель.
  • 0
    Массивы не являются переменными указателя. Однако они автоматически преобразуются в указатель на свой первый элемент при использовании в некоторых выражениях.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню