Impression des valeurs hexadécimales pour console en C++

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
    char array[10];

    for(int i = 0; i<10;i++)
    {
        array[i] = 'a' + i;
    }

    char* test = array;

    printf("%x\n", test);
    cout << hex << test << endl;

}

La sortie est la suivante:

bffff94e
abcdefghijN???

Pourquoi n'est-il pas l'impression est la même chose?

Si vous souhaitez imprimer un pointeur, vous devez utiliser %p avec printf(), %x est un entier hexadécimal non signé. Comme %x, std::hex ne fonctionne pas comme vous l'attendez avec des pointeurs, il vise à être utiliser avec partie intégrante des valeurs numériques.

OriginalL'auteur ordinary | 2012-06-19