• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

lugh

Parâmetros por referência

3 mensagens neste tópico

Boas!

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

void data(int *dia, int *mes, int *ano);

int main(void)
{
  int dia, mes, ano;
  data(&dia, &mes, &ano);
  printf("[dd-mm-aa]:%d %d %d\n", dia, mes, ano);
  system("PAUSE");	
  return 0;
}



void data(int *dia, int *mes, int *ano) {
  printf("Dia?\n");
  fflush(stdin);
  scanf("%d", &dia);
  printf("Mes?\n");
  fflush(stdin);
  scanf("%d", &mes);
  printf("Ano?\n");
  fflush(stdin);
  scanf("%d", &ano);     
}

Como é que posso fazer para os valores chegarem (como deve de ser) ao main?

Obrigado!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Repara que nos scanf não tens que usar o endereço das variáveis, mas sim o conteúdo, porque dia, mes e ano dentro da função data estão definidos como apontadores.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado pedrosorio!

Assim sendo fica,

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

void data(int *dia, int *mes, int *ano);

int main(void)
{
  int dia, mes, ano;
  data(&dia, &mes, &ano);
  printf("[dd-mm-aa]:%d %d %d\n", dia, mes, ano);
  system("PAUSE");	
  return 0;
}



void data(int *dia, int *mes, int *ano) {
  printf("Dia?\n");
  fflush(stdin);
  scanf("%d", dia);
  printf("Mes?\n");
  fflush(stdin);
  scanf("%d", mes);
  printf("Ano?\n");
  fflush(stdin);
  scanf("%d", ano);     
}

Cheers!

0

Partilhar esta mensagem


Link 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