typedef struct all{
int x;
int ast[5];
}ALL;
ALL x[5];
int main(void){
ALL y[5];
// ...
}
我如何能够将常量值设置为ast[5]
,以便所有数组变量具有相同的ast[]
值?
答案 0 :(得分:1)
typedef struct all {
int x;
int ast[5];
} ALL;
ALL x[5];
ALL constast = {0, {1, 2, 3, 4, 5}};
int main(void) {
ALL y[5] = {[0] = constast, [1] = constast, [2] = constast,
[3] = constast, [4] = constast};
// ...
}
答案 1 :(得分:0)
我从标签中假设问题是针对C而不是C ++。
你可以使用一个函数来获取struct数组的大小并返回一个指向数组开头的指针,如下所示:
typedef struct my_struct{
int i;
int var[5];
} my_struct;
my_struct* init_my_struct(int size){
my_struct *ptr = malloc(size * sizeof(struct));
for(my_struct *i = ptr; (i - ptr) < size; i++)
i->var = // whatever value you want to assign to it
// or copy a static value to the the array element
}
现在您可以通过这种方式在代码中使用它:
my_struct *my_struct_ptr = init_my_struct(5); // values inited as required
这种方法的缺点是你正在从声明一个数组转向在堆上使用内存 此外,你不能让别人创建一个特定大小的数组,并使用它按照你想要的方式分配给它。