它的类自己的指针指向的数组的大小是多少?

时间:2018-08-07 12:32:03

标签: c++

class Size_of_dataVariable
{
public:
     int array[50];
};

现在,如果我使用类似这样的指针为此类创建对象

Size_of_dataVariable *point = new Size_of_dataVariable;

并尝试使用

获取类Size_of_dataVariable的数据成员的大小
sizeof(point->array)

然后它将打印200或指针的大小?

3 个答案:

答案 0 :(得分:7)

50或指针的大小都不正确。 point->array是固定数组,而不是指针。虽然指针和数组之间存在关系,但它们不相同

由于point->array是固定数组,因此在其上使用sizeof运算符将为您提供完整数组的大小(以字节为单位),特别是50 * sizeof(int)

因此,假设int的大小为4个字节,则sizeof(point->array)的大小为200。

答案 1 :(得分:1)

在大多数情况下,数组的名称会衰减为指向其第一个元素的指针。在sizeof内部是不会发生的情况之一;数组的名称是数组的名称,sizeof(point->array)是数组的大小。

答案 2 :(得分:0)

实际上,它将打印200

您的代码在数组上使用sizeof运算符,而sizeof返回其操作数的大小(以字节为单位)。由于每个int的大小为4个字节,因此结果为200。

(并非在所有平台上都如此;在某些情况下,int可能更长或更短-但通常 4个字节)。