@herbertbahia Não se pode retornar mais de um valor, isso não é válido
Como estamos trabalhando com ponteiros, a função está trabalhando com referência então ela está alterando diretamente no endereço de memória da variável, por essa razão nem precisamos retornar nenhum valor para a main, por isso dá certo, mas se você reparar vai ver que o que vai ser retornado desse seu return vai ser o valor que está em *Z, pois foi o último e ele só pode retornar um
adicionado 12 minutos depois
Caso não tenha ficado muito claro:
#include<stdio.h>
void troca (int *X, int *Y, int *Z){
// ja atribui X como sendo o menor e Z como sendo o maior
int maior = *Z, menor = *X, intermediario = *Y;
// verifica o menor de todos
if (*Z < *X && *Z < *Y) menor = *Z;
if (*Y < *X && *Y < *Z) menor = *Y;
// verifica o maior de todos
if (*X > *Z && *X > *Y) maior = *X;
if (*Y > *Z && *Y > *X) maior = *Y;
// verifica o que está no meio
if (*X > *Y && *X < *Z || *X < *Y && *X > *Z) intermediario = *X;
if (*Z > *Y && *Z < *X || *Z < *Y && *Z > *X) intermediario = *Z;
*X = menor; *Z = maior; *Y = intermediario;
}
main (){
int X,Y,Z;
printf("Entre com três números:");
scanf("%d %d %d", &X, &Y, &Z);
printf("Você entrou com os seguintes numeros: x=%d, y=%d, z=%d\n",X,Y,Z);
troca(&X,&Y,&Z);
printf("Resultado: x=%d y=%d z=%d", X, Y, Z);
return 0;
}