繁体   English   中英

您可以在结构初始化内部创建数组吗?

[英]Can you create an array inside of a struct initialization?

所以我有一个结构:

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

我想知道是否有可能在结构初始化期间执行类似的操作:

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

不幸的是,当我尝试以这种方式进行操作时,出现编译错误: expected expression before '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;
}

@bruno的解决方案将起作用。 您可以尝试的另一件事是将数组放入Board结构中。 例如:

typedef struct Board {
    size_t size;
    char board[size];
} Board;

优势:避免为每个开发板分配内存/释放内存。
缺点:木板较大,因此复制它的成本更高。 另外,在程序运行之前,您必须知道电路板的大小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM