Você está usando algo que só funciona em C99, não no C antes do C99 (que muitos compiladores ainda requerem). O código abaixo:
#include <stdio.h>
main (int argc, char *argv[]) {
int x = 1000;
int array[x];
}
é rejeitado pelo Microsoft C
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
TesteVetor.c
TesteVetor.c(5) : error C2057: expected constant expression
TesteVetor.c(5) : error C2466: cannot allocate an array of constant size 0
TesteVetor.c(5) : error C2133: 'array' : unknown size
mas é aceito pelo gcc 4.3:
teste2.c:3: warning: return type defaults to 'int'
teste2.c: In function 'main':
teste2.c:5: warning: unused variable 'array'
teste2.c:6: warning: control reaches end of non-void function
P. S. A versão mais recente do Visual Studio (2010) ainda não suporta o C99. Portanto, se for rodar um programa como o que você acabou de escrever, não se esqueça que vai ter problemas com o Microsoft C, que é o padrão no caso do Windows. (Por exemplo, o Java é compilado pela Oracle usando-se o Microsoft C++ 2008. )
Andre Rosa, eu me expressei mal: Quis dizer que nao se pode declarar vetor assim:
int n = 10;
int vet[n];
Com uma variável definindo seu tamanho.
Pois se tratar, de um programa compilado.
Pior ainda no exemplo abaixo que o vetor é definido somente quando o usuário digita um valor.
[code]#include <stdio.h>
int main () {
int x,i;
printf("X: %d\n",x);
scanf("%d",&x);
int vet[x];
printf("X: %d\n",x);
for(i=0;i<10;i++)
scanf("%d, ",&vet[i]);
for(i=0;i<10;i++)
printf("%d, ",vet[i]);
printf("\n\n");
return 0;
}[/code]
Continuo com dúvida, eu sei que compila e executa porque não tem erro de sintaxe.
Mas olhando o código acima, se você digitar x = 5, ele vai preencher o vetor com 10 elementos, e imprimir estes 10 elementos corretamente.
Sem problemas, isto que está está me deixando com duvida.
Será que ele esta declarando apenas a posição do vet[0], assim por diante ???