【发布时间】:2011-08-08 08:15:19
【问题描述】:
我想初始化一个结构数组,但是 memset() 的第二个参数需要一个 int。是否还有另一个功能相同但带有 (void *) 的函数具有第二个参数? 我想到了 memcpy() 但它没有在整个数组中设置值。有什么想法吗?
结构:
typedef struct {
int x;
int y;
char *data;
} my_stuff;
代码:
my_stuff my_array[];
my_array = malloc(MAX * sizeof(my_stuff));
my_stuff *tmp;
tmp->x = -1;
tmp->y = 1;
strcpy(tmp->data = "Initial state");
memset(my_array, tmp, sizeof(my_array));
【问题讨论】:
-
您究竟需要
void*做什么?memset在具有非零参数的结构上相当罕见...... -
好吧,我只是在寻找一个不将 int 作为第二个参数的函数。这样我就可以轻松地将我的结构作为参数传递。我知道我可以使用 for 循环来做到这一点,但我想找到一种更直观的方式来初始化数组。
-
啊,我明白了......不幸的是,在 C 语言中没有什么可以为你做这件事。:(
标签: c initialization memset