我怀疑calloc是否将结构数组的所有元素初始化为零,如:
#define MAXDATA 10
struct Est2 {
int dato0; // Index k
int dato1; // Index j
int dato2; // Index i
double dato3; // Y Coordinate
};
Est2 *myArray = (Est2*) calloc(MAXDATA, sizeof(Est2));
我问这个是因为我不希望myArray的初始数据有垃圾或是否有问题如果我没有用任何值初始化数组,如果在代码中稍后我会初始化它,例如存储一些算术运算的结果?提前谢谢。
答案 0 :(得分:4)
来自man calloc
:
void *calloc(size_t count, size_t size);
calloc()函数连续为每个
count
字节的size
个对象分配足够的空间,并返回指向已分配内存的指针。分配的内存用零值的字节填充。
calloc()
保证它会指向归零数据。
答案 1 :(得分:1)
结构中的所有字节都设置为0
。
这意味着int
的值为0
。 double
可能是陷阱,但大多数常见系统使用{75}表示double
,其值为0.0
。