Wiem!!!
W funkcji Dereferencja() string *nazwisko oznacza, że jest to wskaźnik na stringa. Następnie ustawiasz ten wskaźnik na NULL, a następnie nadpisujesz go tym nazwisko = &nazwa; i ostatecznie nazwisko w Dereferencja jest wskaźnikiem na stringa nazwa.
Aby działało trzeba by było to zrobić tak:
#include <iostream>
using namespace std;
void Dereferencja(string *imie, string *nazwisko)
{
*nazwisko = "";//nazwisko = NULL;
string nazwa;
cout<<"Podaj imie: ";
cin>>*imie;
if(*nazwisko == ""){//if(nazwisko == NULL){
cout<<"Podaj nazwisko: ";
cin>>nazwa;
}
*nazwisko = nazwa;//nazwisko = &nazwa;
cout<<*nazwisko<<endl;
}
int main(){
string imie, nazwisko;
Dereferencja(&imie, &nazwisko);
cout<<imie<<endl;
cout<<nazwisko;
return 0;
}
Uwaga!!!
string imie i string nazwisko z maina nie ma zbyt dużo związku z string *imie i string *nazwisko z Dereferencja().
Jedyny ich związek jest taki, że wykonując to: Dereferencja(&imie, &nazwisko); ustawiamy wskaźniki string *imie i string *nazwisko tak, że wskazują na string imie i string nazwisko z maina.