Passar parametros de vetores preenchidos - C - Portugal-a-Programar
Passar parametros de vetores preenchidos
By Dexter's Lab, January 1, 2013 in C
Já se mostraram bastante prestáveis para comigo neste fórum. Parece-me um bom recurso quando não encontramos respostas facilmente nos manuais nem no google.
Estou a tentar passar um vetor com um contador dentro para uma sub-rotina com valores já lá existentes (do contador/vetor). Faço-o como fosse uma variável normal mas não estou a conseguir. Se algum conhecedor desta matéria me puder ajudar, explicando e com um exemplo, enquanto eu vou procurando em livros pela resposta, poupar-me-ia bastante tempo de busca. Sou novo nisto, por isso se pudessem ser básicos na explicação ser-me-ia muito melhor para entender.
Edited January 1, 2013 by Dexter's Lab
Mete codigo na tua questao.
Para alterar valores na funcao original tens de passar o endereco da variavel
int foobar = 42;
f1(foobar); /* passa variavel normalmente */
printf("%d\n", foobar); /* imprime 42 */
f2(&foobar); /* passa endereco da variavel */
printf("%d\n", foobar); /* imprime o que a funcao f2() meteu na variavel */
Edited January 1, 2013 by pmg
Boas, pmg... sempre atento.
Na função main recebi numeros de um vetor de, imaginemos 6 elementos. Portanto agora quero passar para uma sub-função o vetor:
vetor[6]
e o contador:
para poder usá-los novamente (vetor[contador]) dentro da sub-função, mas com os respetivos valores já na função main() recebidos.
Sei como passar variáveis. Mas com o vetor/contador está-me a proibir de o fazer. Presumo que eu tenha tentado passar os elementos desta forma vetor[contador] e que isso não seja possível, e que os tenha de passar separadamente ou definir o contador uma variavel geral.
Ou será outra coisa que eu desconheço?
Um array (eu nao gosto de lhes chamar vector) nao passa duma funcao para outra!
O que passa é o endereco do primeiro elemento do array ... e consequentemente perde-se a informacao do tamanho do array. Por isso mesmo é que ao passar o endereco do primeiro elemento tambem se passa o numero de elementos.
foo(array, 10);
Neste exemplo, a funcao foo() recebe um ponteiro (o endereco do primeiro elemento do array) e o numero de elementos. Dentro da funcao é usual usar a sintaxe de array para aceder aos elementos od array original (a sintaxe de array e a sintaxe de apontador sao aplicaveis na mesma situacao, com o mesmo significado)