1

new を使用して配列を宣言しています

int *a = NULL;
a = new int[10];

a[0] = 23;
a[1] = 43;
a[2] = 45;
a[3] = 76;
a[4] = 34;
a[5] = 85;
a[6] = 34;
a[7] = 97;
a[8] = 45;
a[9] = 22;

PrintElements(a, 10);

void PrintElements(int * array, int size){
    for (int i=0; i<size; i++) {
        cout << endl << array[i];
    }
}

値を印刷すると、これらの値が得られます

17
2b
二次元
4c
22
55
22
61
二次元
16

誰かが私が間違っていることを教えてもらえますか...? 一方、それなしで new & initialize array を使用しないと、すべて正常に動作します。

4

4 に答える 4

4

ある時点で std::hex を cout に書き込んだ可能性があります。これはオーバーライドされるまで有効です。

于 2010-08-01T10:16:26.860 に答える
2

試す:

std::cout << dec << //all your stuff here

まだ16進モードに設定されています。

于 2010-08-01T10:33:10.620 に答える
2

配列の静的または動的割り当てとは何の関係もありません。

数値は 10 進数ではなく 16 進数として出力されます。

于 2010-08-01T10:15:16.130 に答える
1

17 2b 2d 4c 22 55 22 61 2d 16

これらは明らかに 16 進数です。それらを 10 進数として出力すると、23、43 などの IOW が得られます。これは、配列に入力した数値とまったく同じです。あなたの前に実行されたコードの一部は、PrintElements()16 進数を出力するようにフォーマットを明らかに変更します。

于 2010-08-01T10:26:31.630 に答える