您可以在结构初始化中创建一个数组吗?

标签 c struct

所以我有一个结构:

typedef struct Board {
    size_t size;
    char* board;
} Board;

我想知道在结构初始化期间是否可以做这样的事情:

Board boardStruct = {
    solutionLength, 
    char emptyBoard[size]
};

不幸的是,当我尝试这样做时,出现编译错误: “char”之前的预期表达式

有什么想法吗?我试图避免在结构初始化之外声明数组,但如果这是唯一的选择,我想这就是我必须采用的路线。

最佳答案

你可以做这样的事情:

#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;
}

关于您可以在结构初始化中创建一个数组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54271857/

相关文章:

c - 在最后一个 recvfrom() 中以 const char* 形式获取 IP 和端口

c++ - 如何将字符串添加到我的结构数组中,该数组在 C++ 中同时包含字符串和整数?

c++ - 发送包含其他结构的结构作为 ZeroMQ 消息

C++结构,新类型之间的区别;和新类型()

sorting - 如何在ColdFusion中对结构数组进行排序

c指针引用和算术

c - 指向不同结构实例的结构指针

c - 在另一个 'string' 中搜索子 'string'

c - 初始化结构数组的全局数组

c - 如何使用 gcov 对动态库进行单元测试?