所以我有一个结构:
typedef struct Board {
size_t size;
char* board;
} Board;
我想知道在初始化结构时是否可以做这样的事情:
Board boardStruct = {
solutionLength,
char emptyBoard[size]
};
不幸的是,当我尝试以这种方式进行操作时,出现编译错误:
expected expression before 'char'
有什么想法吗?我试图避免在结构初始化之外声明数组,但是如果这是唯一的选择,我想那是我必须走的路线。
答案 0 :(得分:3)
您可以执行以下操作:
#include <stdlib.h>
typedef struct Board {
size_t size;
char* board;
} Board;
int main()
{
const int solutionLength = 3; /* or #define solutionLength 3 */
Board boardStruct = {
solutionLength,
malloc(solutionLength)
};
return 0;
}
或更接近您的建议:
#include <stdlib.h>
typedef struct Board {
size_t size;
char* board;
} Board;
int main()
{
const int solutionLength = 3; /* or #define solutionLength 3 */
char emptyBoard[solutionLength];
Board boardStruct = {
solutionLength,
emptyBoard
};
return 0;
}
答案 1 :(得分:0)
@bruno的解决方案将起作用。您可以尝试的另一件事是将数组放入Board结构中。例如:
typedef struct Board {
size_t size;
char board[size];
} Board;
优势:避免为每个开发板分配内存/释放内存。
缺点:木板较大,因此复制它的成本更高。另外,在程序运行之前,您必须知道电路板的大小。