Ram*_*ain -2 c++ arrays struct
我正在用C++编写程序,我需要初始化我创建的struct对象的数组.它看起来像这样:
typedef struct {
float x;
float y;
} vec2;
Run Code Online (Sandbox Code Playgroud)
然后我初始化一个这样的数组:
vec2 hotSpot[1000];
Run Code Online (Sandbox Code Playgroud)
我想当我初始化这样一个数组时,它会完全是空的,但是当我打印sizeof(hotSpot)的值时,它会说8000!
我在某个地方出错了,还是我误解了一些概念?如何将此数组设为空?
你的数组不是,也永远不会是"空".它拥有并将永远拥有1000个元素.这就是C++数组的本质.
问题是这些元素不处于任何确定性状态,并且实际上访问尚未初始化的任何元素是未定义的行为.
更一般地说,C++中的对象永远不会是"空的".它们总是存在的.如果对象不存在,则不会有对象.有些对象总是以明确的状态存在,而其他对象(例如原始类型或者已经被命名的对象std::move)可以存在于未初始化或不确定状态 - 它们仍然存在,但是你唯一允许的是与他们一起为他们分配一个值.
| 归档时间: |
|
| 查看次数: |
39658 次 |
| 最近记录: |