Voici mon code:Pourquoi est-ce que * pointer + offset ne peut pas être utilisé comme une valeur l? ("Erreur: non-lvalue en cession")
void doubleValuesInArray(int *pointer) {
for (int n = 0; n < 2; n++) {
int a = (*pointer+n);
a = a * 2;
*pointer+n = a;
}
}
int main(int argc, char** argv) {
int myArray[] = {1,2};
doubleValuesInArray(myArray);
cout<<myArray[0]<<endl;
return 0;
}
Et la sortie est:
main.cpp: En fonction `vide doubleValuesInArray (int *) ': main.cpp: 19: erreur: non-lvalue dans l'attribution make [2]: * [build/Debug/Cygwin Windows/main.o] erreur 1 make [1]: [.build-conf] Erreur 2 make: * * [.build-impl] Erreur 2
Ma question est:
int a = (*pointer+n);
fonctionne très bien. La variable 'a' obtient les valeurs 0 et 1 du tableau en utilisant * pointer + n.
Cependant
*pointer+n = a;
ne semble pas fonctionner.
Si j'utilise pointeur [n] = a; cela fonctionne aussi bien.
Pourquoi ma première approche ne fonctionne-t-elle pas?
Quelqu'un peut-il proposer un meilleur titre pour cette question il peut apparaître dans les recherches? –