Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Dexter's Lab

Passar parametros de vetores preenchidos

Mensagens Recomendadas

Dexter's Lab

Viva, pessoal

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.

Grato pela atenção.

Editado por Dexter's Lab

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

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 */

Editado por pmg

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Dexter's Lab

Boas, pmg... sempre atento.

Vou dar um exemplo.

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:

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?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

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.

int array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
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)

int foo(int *vec, size_t n) {
   int sum = 0;
   for (int i = 0; i < n; i++) {
       sum += vec[i]; /* o mesmo que sum += *(vec + i); */
   }
   return sum;
}

Se publicares o teu codigo é mais facil perceber a tua duvida.

O que é que queres dizer com vetor/contador????


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.