Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom galera, to iniciando uma faculdade de SI e to vendo programacao em C.
Bom eu ja tenho experiencia com logica de programacao e alguma experiencia em Turbo Pascal, Delphi, PHP, Visual Basic(conheco o basico)
No pascal eu ja tenho um conhecimento intermediario...
Ja em C...
Gostaria de saber se em C existe uma maneira de criar um array como se fosse no pacal...
mais ou menos assim: Numeros:array[1..i];
onde futuramente a variavel i tera o valor que o usuario digitar....
se ee digitar 3 o array tera 3 posicoes.
1 ate 3.
A sintaxy nao eh bom essa (nem em pascal , mt menos em C) mais a logica bate com pascal...
Procurei na net, acabei vindo para no forum do imasters e acabei sendo redirecionado(por usuarios e topicos) a estudar um pouco de ponteiros, porem nao vi uma maneria de impantar essa logica em C.
Obrigado!
UGA
Bom... mais tem como eu fazer ssa declaracao de arrays deixando o usuario definir seu tamanho??
ai nbesse cofigo você definiu um array de 10 inteiros....eu nao quero deixar ele definido...
Obrigado pela resposta... ja estou realizando testes aki... soh que ainda tenho essa duvida
edit:
Esqueci de perguntar como eu uso uma variavel de controle nesse array, para que eu possa saber em que posicao ele esta...
O C99 suporta "variable length arrays". Tanto para acessar membros de arrays como para "derreferenciar" ponteiros que apontam para elementos de arrays, usa-se variáveis de tipos inteiros como auxiliares.
Contudo, sugiro que você tome algum tempo lendo os livros que recomendei. A funcionalidade que mencionei acima é bem nova, e poucos compiladores a suportam. É imprescindível que você entenda alguns aspectos da linguagem (como a manipulação de endereços e a utilização de arrays e outros tipos compostos), e estes assuntos são todos cobertos nos livros em questão.
Bom... nao adianta querer aprender tudo de uma vez...
Vou procurar ler mais sobre arrays...
Considere o topico resolvido.
Obrigado.
Andreatti, para criar vetores com tamanhos definidos pelo usuário é necessário entender alocação dinâmica que significa, a grosso modo, 'separar espaço no momento de execução do programa' e não antes como acontece quando predefinimos tamanhos de vetores.
Como você disse que vai dar uma olhada, estou deixando só o exemplo de como funcionaria em um vetor de inteiros:
int *vetor, tamanho;
tamanho = 15;
vetor = (int*) malloc(tamanho*sizeof(int));
Nesse caso tamanho tem um valor que pode ser mudado pelo usuário através de uma função de entra (cin, scanf, etc)...
Funciona basicamente assim:
Cria-se um ponteiro de inteiros (*vetor), então inicializa-se um vetor através da função malloc, que aloca dinâmicamente na memória 'tamanho' vezes o espaço que um INTEIRO ocupa. Ou seja, num vetor de 10 inteiros, ele alocará 10 vezes o tamanho de memória suficiente para um inteiro.
Abraços!
Só gostaria de ressaltar que a solução acima é C++.
Em C, não se deve fazer casting do retorno de funções retornando void *.
Não confunda arrays com ponteiros. São coisas bem diferentes.
Sugiro que aprenda C lendo algum livro consagrado (os da minha assinatura são bons).
int *p; // declara um ponteiro para int
int a[10]; // declara uma array de 10 int