Osserva bene come si passano i parametri alle funzioni
e che tipo di valore ci restituiscono:
codice:
#include<iostream.h>

char * passa_stringa_a_stringa(char stringa[25]){//1
    return(stringa);
} 

char * passa_stringa_a_puntatore(char * c){//2
    return(c);
} 

char * passa_puntatore_a_puntatore(char * c){//3
    return(c);
} 

char * passa_puntatore_a_stringa(char stringa[25]){//4
    return(stringa);
} 

void passa_stringa_a_stringa_senza_resto(char stringa[25]){//5
    cout<<stringa<<endl;
}

void passa_puntatore_a_puntatore_senza_resto(char * p){//6
    cout<<p<<endl<<endl;
}

char passa_carattere_a_carattere(char carattere){//7
    return(carattere);
}

void passa_carattere_a_carattere_senza_resto(char carattere){//8
    cout<<carattere<<endl<<endl;
}


void main(){
    char * b, buffer[25]="Oriinal...Hello World!!!";
	
	cout<<passa_stringa_a_stringa(buffer)<<endl;//1
	cout<<passa_stringa_a_puntatore(buffer)<<endl<<endl;//2 
   
	b=buffer;

	cout<<passa_puntatore_a_puntatore(b)<<endl;//3
	cout<<passa_puntatore_a_stringa(b)<<endl<<endl;//4 
	
	passa_stringa_a_stringa_senza_resto(buffer);//5
	passa_puntatore_a_puntatore_senza_resto(b);//6

	cout<<passa_carattere_a_carattere(buffer[0])<<endl;//7
	passa_carattere_a_carattere_senza_resto(buffer[0]);//8

}