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

有人可以告诉我我做错了什么......?另一方面,当我不使用新的和初始化数组时,一切正常。

4

4 回答 4

4

您可能在某个时候向 cout 写入了 std::hex;这将一直有效,直到被覆盖。

于 2010-08-01T10:16:26.860 回答
2

它与数组的静态或动态分配无关。

这些数字打印为十六进制值,而不是十进制值。

于 2010-08-01T10:15:16.130 回答
2

尝试:

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

它仍然设置为十六进制模式。

于 2010-08-01T10:33:10.620 回答
1

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

这些显然是十六进制数。如果将它们打印为小数,则会得到 23、43 等。IOW,正是您放入数组中的数字。PrintElements()在您显然更改格式以输出十六进制数字之前执行的某些代码。

于 2010-08-01T10:26:31.630 回答