我正在定义我的结构:
struct Shape {
unsigned int l; // value for length
unsigned int h; // value or height
unsigned int b; // value for breadth
};
在我的程序中,我动态分配了一个Shape实例:
Shape *image = new Shape[i];
我试图打印出它的大小:
cout<< "The size of image is " << sizeof(image)<< ends;
无论i的值是什么,我都得到相同的输出:(例如:0,1,2,10)
The size of the image is 8
为什么会这样?
注意:但是当我将sizeof运算符应用于Shape结构时,我得到了正确答案:
sizeof(Shape) -> returns 12
答案 0 :(得分:4)
image
类型为Shape*
,不属于Shape
类型,因此sizeof(image)
的大小为Shape*
。
请尝试sizeof(*image)
。
答案 1 :(得分:3)
The size of the image is 8
为什么会这样?
输出正确,sizeof(image)
给出指针变量Shape*
本身的大小,而不是分配数组的大小。