簡體   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