2013-04-04 3 views
0

Je fais quelques exercices pour comprendre comment accéder aux valeurs d'un tableau après qu'elles ont été modifiées avec des pointeurs. Quelqu'un peut-il indiquer pourquoi la première sortie ne montre pas la sortie désirée? Je suis en train de faire à la fois pour imprimer Cout 1234, un en utilisant le nouveau pointeur et un en utilisant la position dans le tableauPointeurs et conversion d'un tableau char en un int

int main() 
{ 
    char myArray[50]={0}; 
    short* sizeOfAlloc=(short*)(myArray+5); 
     *sizeOfAlloc=1234; 

    cout << (short*)(myArray+5) <<endl; 
    cout << *sizeOfAlloc <<endl; 
    system("pause"); 

} 
+0

Dans la première ligne, vous ne déréférencer. –

+0

myArray est un 'char **' mais vous le convertissez en 'short *'. 2 problèmes: 1. (le principal), vous avez changé le niveau d'indirection. 2. Vous avez transtypé 'char' en' short', ce que vous ne devriez faire que si vous savez vraiment ce que vous faites (plus probablement vous voulez lancer 'int16_t') – Dave

+0

Merci Daniel et Dave. En ce qui concerne votre premier commentaire dave, connaissez-vous un meilleur moyen de convertir certains caractères en un double ou autre chose? – user2012481

Répondre

2
cout << (short*)(myArray+5) <<endl; 

Imprime le pointeur. Pas la valeur pointée par elle.

cout << *((short*)(myArray+5)) <<endl; 
     ^^     ^^ 

imprimera la valeur pointée par (short*)(myArray+5)

+0

Merci beaucoup. – user2012481

+0

Heureux que je pourrais aider :) –

+2

@stardust_: Si cela a aidé à résoudre votre problème, marquez ceci comme réponse. –

Questions connexes