1

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

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。

我在这里做错了什么?

谢谢你。

4

3 回答 3

2

因为customerListArray是指针

于 2013-10-10T07:17:36.403 回答
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() 返回字节数而不是元素数

于 2013-10-10T07:18:21.803 回答
1

sizeof() 返回元素的字节大小,在这种情况下,您的“客户**”大小为 4 个字节。
有关 sizeof() 的参考,请参阅此页面

于 2013-10-10T07:01:57.367 回答