嗨我在头文件中定义了一个数组
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。
我在这里做错了什么?
谢谢。
答案 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()