class Size_of_dataVariable
{
public:
int array[50];
};
现在,如果我使用类似这样的指针为此类创建对象
Size_of_dataVariable *point = new Size_of_dataVariable;
并尝试使用
获取类Size_of_dataVariable
的数据成员的大小
sizeof(point->array)
然后它将打印200或指针的大小?
答案 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个字节)。