Ir para conteúdo
Fórum Script Brasil
  • 0

Passar parametros para funções


Gnomo Verde

Pergunta

tentei compilar dois programas diferentes com uma mesma função um dos programas me retorna nenhum erro, enquanto o outro me retorna um erro por causa de uma linha extamente igual no outro:

int troca (int &i, int &j)

um dos programas me retorna:
expected ‘;’, ‘,’ or ‘)’ before ‘&’ token
Porque isso acontece?

Editado por Gnomo Verde
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Não, não é protótipo, pelo que parece o erro está entre os parenteses....

Código que funcionou:

#include <stdio.h>
int troca (int &i, int &j)
{
    int tmp = i;
    i = j;
    j = tmp;
    return tmp;
}
int main (void)
{
    int n, k;
    printf ("Introduza dois numeros: "); scanf ("%d%d", &n, &k);
    printf ("Antes da troca: n=%d k=%d\n", n, k);
    printf ("%d\n", troca (n, k));
    printf ("Depois da troca: n=%d k=%d", n, k);
}

Já nesse da erro de compilação:

#include <stdio.h>
#include <stdlib.h>

int troca (int &i, int &j)
{
    int tmp = i;
    i = j;
    j = tmp;
    return tmp;
}

int main (void){

    FILE *file;
    float v[10], x;
    int i , n;

    for (i=0; i<10; i++){
        printf("Introd. o %d° N°: ", i+1)/
        scanf("%f", &v[i]);
    }

    if ((file = fopen("DADOS.DAT", "w+b")) == NULL){
        printf ("Imp. criar o arq. temp.dat\n\n");
        exit(1);
    }
    if ((fwrite(v, sizeof (float), 10, file)) != 10){
        fprintf (stderr, "não foi possivel escrever todos os elementos!!\n");
        exit(2);
    }

    printf("Qual a ordem do numero que pretende ver 1..10? "); scanf("%d", &n);

    fseek(file, (float) (n-1)*sizeof(float), SEEK_SET);
    fread(&x, sizeof (float), 1, file);
    printf ("O %2d° n° introduzido foi: %.2f\n", n, x);

    rewind(file);
    fread(&x, sizeof (float), 1, file);
    printf ("O  1° n° introduzido foi: %.2f\n", x);

    fseek (file, -(long) sizeof(float), SEEK_END);
    fread(&x, sizeof(float), 1, file);
    printf ("O 10° n° introduzido foi: %.2f\n", x);

    fclose(file);
}

como você pode ver a função troca é a mesma nos dois códigos, porem somente um retorna um erro de compilação...

consegui descobrir o porque disso... o primeiro arquivo foi salvo como prog0901.cpp, enquanto o segundo foi salvo como prog1010.c ... Aparentemente em C++ é possivel utilizar o '&' em funções enquanto em C isso não é possivel (se eu não estiver errado foi isso que aconteceu...).

Editado por Gnomo Verde
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...