Dexter's Lab 2 Denunciar mensagem Publicado 1 de Janeiro de 2013 (editado) 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 1 de Janeiro de 2013 por Dexter's Lab Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
pmg 96 Denunciar mensagem Publicado 1 de Janeiro de 2013 (editado) 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 1 de Janeiro de 2013 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 2 Denunciar mensagem Publicado 1 de Janeiro de 2013 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 96 Denunciar mensagem Publicado 1 de Janeiro de 2013 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