2015-03-13 3 views
0

Mon code est supposé supprimer une valeur spécifiée et décaler le tableau. Quand je cours le code il imprime une adresse au lieu du contenu du tableau. Quel est le problème avec mon code?Pourquoi ma fonction imprime-t-elle une adresse à la place du contenu de mon tableau?

using namespace std; 
void arrayShift(int arr[], int length, int value) { 
    for(int i = 0; i<length; i++) { 
    if(arr[i] == value) { 
     for (int k = i; k<length-1 ; k++) { 
     arr[k] = arr[k+1]; 
     } 
     arr[length-1] = 0; 
     i--; 
    } 
    } 
    cout << arr; 
} 

int main() { 
    int inputarr[]={9,8, 9, 9, 9, 9, 6}; 
    int length = 7; 
    int value = 9; 
    arrayShift(inputarr,length,value); 
} 
+0

Ce que vous essayez de faire n'est pas clair. Vous ne pouvez pas vous attendre à ce que votre fonction renvoie votre tableau si vous avez spécifié void ... – AMDG

+0

désolé je viens de l'éditer – Andrew

+0

une fonction 'void' est celle qui ne renvoie rien. Alors ... quel mot vouliez-vous utiliser au lieu de * return *? –

Répondre

3

La ligne

cout << arr; 

Afficher une autre adresse, car Cout n'affiche pas un tableau directement.

Vous devez utiliser un pour afficher toutes vos valeurs. Quelque chose comme ça:

for(int i = 0 ; i < length ; i++) 
    cout << arr[i]; 

Cependant, vous devriez vraiment mettre la sortie (pour cout) dans la fonction principale.

+0

Mon code imprime toujours l'adresse lorsque j'apporte les modifications. – Andrew

+0

Veuillez passer votre code ici: http://cpp.sh – AMDG

+0

cpp.sh/7rbv Il semble y avoir une erreur dans la façon dont je l'appelle. Pourquoi ne puis-je pas simplement utiliser ma fonction? – Andrew