初始化struct的2维数组,所有值都归零

时间:2014-01-02 04:32:46

标签: c arrays performance struct

首先,我应该说我的C经验非常少,当我说的很少时,我的意思是大约2个半小时。所以请原谅并纠正任何不准确,愚蠢或其他个人失误。

以下是目前的代码:

typedef struct
{
    float n;
    int x;
    int y;
    int values[5];
} Cell;

typedef Cell Grid[10][10];

void update(Grid *source)
{
    // This should be a 2D array of Cells.
    // All the values in the Cell should be 0,
    // including the contents of the values array.
    Grid grid;
}

更新将被频繁调用并且在某种程度上对性能至关重要,因此如果需要,我愿意牺牲一些可读性/简单性/编码时间。不,这不是过早的优化。

感谢您的帮助,

萨姆。

2 个答案:

答案 0 :(得分:2)

最简单快捷的方法是memset数组:

memset(grid, 0 sizeof(Cell)*10*10);

实际上grid的大小在编译时是已知的,所以

memset(grid, 0, sizeof(Grid));

应该足够了。

答案 1 :(得分:1)

这会初始化你的数组。

Grid grid={0};