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.
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".