这可能听起来有些愚蠢,但我必须知道我在用C写一个宾果板。
#include <stdio.h>
typedef struct {
int a;
int b;
int c;
int d;
int e;
} row;
typedef struct {
row one;
row two;
row three;
row four;
row five;
} bingo_board;
void initialize_columns()
{
bingo_board board = {
.one = {1, 2, 3, 4, 5},
.two = {6, 7, 8, 9, 10},
.three = {11, 12, 13, 14, 15},
.four = {16, 17, 18, 19, 20},
.five = {21, 22, 23, 24, 25}
};
}
这可能吗?
答案 0 :(得分:4)
可以简单地完成
void initialize_columns()
{
bingo_board board = {
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20},
{21, 22, 23, 24, 25}
};
}
甚至是
void initialize_columns()
{
bingo_board board = {
1, 2, 3, 4, 5,
6, 7, 8, 9, 10,
11, 12, 13, 14, 15,
16, 17, 18, 19, 20,
21, 22, 23, 24, 25
};
}
无需“标记”每一行。标记语法在C99中可用,并且您的示例中的内容对于C99已经是正确的。
答案 1 :(得分:1)
因为结构是c中的一等公民,所以赋值很明确,这可以让你
static bingo_board initial_board = {
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20},
{21, 22, 23, 24, 25}
};
void init_board(bingo_board *b)
{
*b = initial_board;
}
这似乎是你想要的。如果你确实在函数中声明了这个板,我建议将它声明为静态,因为你不修改它,所以持久的更改是可以的,所以函数不必在每次调用时增加堆栈。