为什么有人会这样做?更好的是,这甚至是如何工作的?我会假设这会以某种方式创建一个只有第一个成员定义的三个结构数组。我意识到一个指针指向数组的第一个元素,并且我看到这个如何工作,但是如何定义这个指针会把我扔掉! (GCC 4.8.4)初始化结构数组初始化单个元素的所有成员,为什么?
void do_something(const void *);
typedef struct{
int a;
char b;
int c;
} the_data_t;
int main(int argc, char *argv[])
{
the_data_t my_data[] = {10, 'a', 30};
do_something((const void *)my_data);
}
void do_something(const void *data)
{
printf("data a: %d\ndata b: %c\ndata c: %d\n", ((the_data_t*)data)->a,
((the_data_t*)data)->b, ((the_data_t*)data)->c);
}
输出
数据:10
数据B:一个
数据c:30
无论如何,我改成了这一点。 。
int main(int argc, char *argv[])
{
the_data_t my_data = {10, 'a', 30};
do_something(&my_data);
}
你应该显示真实的代码。这可能是辅助函数被设计为与数组一起工作。因此,如果数组包含一个元素,则应该将其声明为数组而不是单个结构。 –
没有办法只初始化一个结构的一部分,它是全部或全部。 – molbdnilo