Witam właśnie przed chwilą ukończyłem ,rozdział 13. Korzystanie z wskaźników. Przystąpiłem do rozwiązywania zadań praktycznych. Mam problem z rozwiązaniem zadania numer 3 które bezpośrednio nawiązuje do zadania o numerze 1.
zad. 1: Napisz funkcję, która prosi użytkownika o podanie w dwóch osobnych zmiennych imienia i nazwiska. Funkcja ta powinna zwracać obie wartości za pośrednictwem dodatkowych parametrów wskaźnikowych (lub referencji) przekazywanych do niej podczas jej wywoływania. Najpierw postaraj się napisać taką funkcję, korzystając ze wskaźników, a następnie przy użyciu referencji.
Rozwiązanie dla tego zadania.
#include <iostream>
using namespace std;
void reference_person(string &x, string &y)
{
cout<<"Wprowadz imie: ";
cin>>x;
cout<<"Wprowadz nazwisko: ";
cin>>y;
}
string indicator_person(string *x, string *y)
{
cout<<"Wprowadz imie: ";
cin>>*x;
cout<<"Wprowadz nazwisko: ";
cin>>*y;
}
int main()
{
// Wykorzystanie referencji
string first_name, last_name;
reference_person(first_name, last_name);
cout<<first_name<<" "<<last_name<<'\n';
// Wykorzystanie wskaznika
string *w_f_name=&first_name, *w_l_name=&last_name;
indicator_person(w_f_name, w_l_name);
cout<<first_name<<" "<<last_name<<'\n';
return 0;
}
zad. 3: Zmodyfikuj program napisany w ramach pierwszego zadania w taki sposób, aby prosił użytkownika o podanie nazwiska tylko wtedy, gdy w parametrze dotyczącym nazwiska funkcja otrzyma wskaźnik o wartości NULL.
Szczerze nie wiem czy dobrze interpretuje dane zadanie ale wtedy wskaźnik nie wskazuje na żadną wartość więc wykorzystanie go do zapisu nie ma sensu. Ponieważ dane i tak nie trafią do pamięci.
Mam także pytanie czy mogę w funkcji utworzyć nowy wskaźnik, próbowałem i niestety podczas kompilacji otrzymuje błąd. Myślałem aby w przypadku gdy argument funkcji a zarazem wskaźnik wskazuje na pusty adres pamięci. Przypisać nazwisko do innej zmiennej przy użyciu wskaźnika i w funkcji głównej korzystając z tego adresu odczytać go.
Z góry dziękuje za pomoc.