You haven't allocated any memory for dest. Here's a rewrite of strreva():
1 2 3 4 5 6 7 8 9
void strreva(char *s)
{
char dest[20];
char* d = dest + strlen( s ); // Start d pointer pointing to end of dest.
*d-- = 0; // zero terminate it
while( *s ) // while we haven't hit the null char
*d-- = *s++;
std::cout << "Reverse is " << dest << '\n';
}