Kod idzie w ten sposób

#include<stdio.h>
#include<stdlib.h>
int main()
{
 int a[]={10,20,30,40,50};
 int j;
 for(j=0;j<5;j++)
 {
  printf("%d\n",*a);
  a++;
 }
 return 0;
}

Wynik-

Błąd -: Lvalue wymagane jako operand przyrostowy

Dlaczego błąd jest tutaj błąd Lvalue?

1
Arpit king 3 czerwiec 2018, 14:05

3 odpowiedzi

Najlepsza odpowiedź

Operand ++ musi być modyfikowalną lvalue.

Z C11 rozdział §6.5.2.4

operanda operatora przyrostu lub zmniejszenia postFixa ma atomowe, kwalifikowane, lub niewykwalifikowany typ rzeczywistego lub wskaźnika, a będą modyfikowalną lvalue.

Nazwa tablicy nie jest modyfikowalną lvalue. Dlatego nie można go używać jako operand ++.

Dodać, cytując C11, rozdział §6.3.2.1

[...] modyfikowalna lvalue to lvalue Nie ma typu tablicy , nie ma typu niekompletnego, nie ma konstqualified typ, a jeśli jest to struktura lub związek, nie ma żadnego członka (w tym, rekurencyjnie, każdy członek lub element wszystkich zawieranych agregatów lub związków zawartych) z konstqualified rodzaj.

3
Sourav Ghosh 3 czerwiec 2018, 11:09

Nie możesz zwiększać nazwy tablicy. Czy zrobiłbyś to następujące, byłoby dobrze, jak będziesz pracował z wskaźnikami:

int main()
{
 int a[]={10,20,30,40,50};
 int *b= a;
 int j;
 for(j=0;j<5;j++)
 {
  printf("%d\n",*b);
  b++;
 }
 return 0;
}
2
Paul Ogilvie 3 czerwiec 2018, 11:11

Możesz użyć do dodania wartości indeksu na tablicy wskaźnika, aby wyświetlić wartości tablicy.

Kod:

#include <stdio.h>

int main()
{
   int a[]={10,20,30,40,50};
 int j;
 for(j=0;j<5;j++)
 {
  printf("%d\n",*(a+j));
 }

 return 0;
}

Wynik:

enter image description here

0
Usman 3 czerwiec 2018, 11:59