Inicializando matriz de comprimento variável

Ao inicializar um compilador de matriz de comprimento variável, uma mensagem de erro é exibida:

[Error] variable-sized object may not be initialized 

Fragmento de código:

 int n; printf("Enter size of magic square: "); scanf("%d",&n); int board[n][n] = {0}; 

Como os arrays de comprimento variável devem ser inicializados? E por que todos os elementos não são inicializados para 0 no modo abaixo;

  int board[n][n]; board[n][n] = {0}; 

?

VLAs não podem ser inicializados por qualquer forma de syntax de boot. Você deve atribuir os valores iniciais aos elementos da matriz após a declaração da maneira que preferir.

C11: 6.7.9 Inicialização (p2 e p3):

Nenhum inicializador tentará fornecer um valor para um object não contido na entidade que está sendo inicializada.

O tipo da entidade a ser inicializada deve ser uma matriz de tamanho desconhecido ou um tipo de object completo que não seja um tipo de matriz de comprimento variável .

Você terá que usar o memset :

 memset(board, 0, sizeof board); 

Se você quiser usar VLAs, você deve remover a boot {0}

 int n; printf("Enter size of magic square: "); scanf("%d",&n); int board[n][n]; 

1.Você pode simplesmente inicializar o array da seguinte maneira:

 int n; printf("Enter size of magic square: "); scanf("%d",&n); int board[n][n]; for(int i=0; i 

2. memset () deve ser usado apenas quando você deseja definir o array como "0".

Intereting Posts