calloc初始化结构数组吗?

时间:2014-04-10 01:04:43

标签: c calloc

我怀疑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的初始数据有垃圾或是否有问题如果我没有用任何值初始化数组,如果在代码中稍后我会初始化它,例如存储一些算术运算的结果?提前谢谢。

2 个答案:

答案 0 :(得分:4)

来自man calloc

void *calloc(size_t count, size_t size);
  

calloc()函数连续为每个count字节的size个对象分配足够的空间,并返回指向已分配内存的指针。分配的内存用零值的字节填充。

calloc()保证它会指向归零数据。

答案 1 :(得分:1)

结构中的所有字节都设置为0

这意味着int的值为0double可能是陷阱,但大多数常见系统使用{75}表示double,其值为0.0