En lugar de usar el valor de retorno, usa los argumentos que se pasan a la función, pero pasada la dirección, o como referencia:
#include <iostream.h>
#include <string.h>
void modif_arg(int* i,float* x,char s[])
{
cout << "Valores de los argumentos pasados a la funcion : \n";
cout << "entero i : " << *i << "\n";
cout << "flotante x : " << *x << "\n";
cout << "cadena s : " << s << "\n";
*i = 100;
*x = 3.14159;
strcpy(s,"Nueva cadena");
}
int main()
{
int a = 0;
float b = 2.718281;
char c[] = "cadena original";
modif_arg(&a,&b,c);
cout << "Valores de los argumentos retornados por la funcion : \n";
cout << "entero a : " << a << "\n";
cout << "flotante b : " << b << "\n";
cout << "cadena c : " << c << "\n";
return 0;
}