C ++数组大小始终为4

时间:2013-10-10 06:59:36

标签: c++ arrays

嗨我在头文件中定义了一个数组

private:
    Customer** customerListArray;

在我的cpp文件中,我将其设置如下,

customerListArray = new Customer* [data.size()];
cout << "arr size " << data.size() << "\n";
cout << "arr size " << sizeof(customerListArray) << "\n";

然而,data.size()是11900,但sizeof(customerListArray)数组总是4.我尝试用100替换data.size(),但仍然得到4。

我在这里做错了什么?

谢谢。

3 个答案:

答案 0 :(得分:2)

因为customerListArray是一个指针

答案 1 :(得分:2)

指针总是固定大小,OP使用指针。要使 sizeof()返回数组的实际长度,您必须声明一个数组并将其名称传递给sizeof()。

int arr[100];

sizeof(arr); // This would be 400 (assuming int to be 4 and num elements is 100)

int *ptr = arr;

sizeof(ptr); // This would be 4 (assuming pointer to be 4 bytes on this platform.

同样重要的是要注意sizeof()返回字节数而不是元素数

答案 2 :(得分:1)

sizeof()返回元素的大小(以字节为单位),在这种情况下,“customer **”的大小为4个字节。
See this page for reference on sizeof()