在动态创建的结构数组中,结构的每个条目都被初始化为什么?
详细信息:
如果我们像这样创建一个动态的浮点数组:
float* arr = ( float* ) malloc ( 100 * sizeof ( float ) );
然后可以用任何东西(see here)填充数组。但是,当我们将结构替换为像这样的浮点数时,我无法绕过发生的事情
typedef struct
{
float x = 123.456;
} foo;
foo* arr = ( foo* ) malloc ( 100 * sizeof ( foo ) );
是否使用完全初始化的arr
结构创建了数组foo
的所有条目,还是我必须手动更新x
值?
答案 0 :(得分:3)
typedef struct
{
float x = 123.456;
} foo;
您不能在结构类型中使用默认值。这不是有效的C代码。
malloc
分配的对象具有不确定的值。
答案 1 :(得分:1)
浮子和结构之间没有区别。您需要手动初始化每个动态分配的内存区域。
答案 2 :(得分:1)
float
案例可以“初始化”到任何事情应该提供你需要的答案 - 事实上它并没有初始化,但它可能包含任何内容,因为没有进行初始化。 struct
也是如此 - 没有在分配时进行初始化,因此返回的内存段的(很可能)垃圾内容就是你得到的。如果你关心新分配的内存的内容(你可能应该这样做),你需要自己初始化它。