Zwracanie/przesyłanie struktury przez funkcję.

0

Wpadłem na pomysł napisania programu który będzie wysyłał strukturę do funkcji, modyfikował ją, a potem zwracał. Program udaje się skompilować natomiast zwraca jakiś adres, a w moim zamyśle miał wypisywać x i y punktu1 powiększone o 1. Zastanawiam się czy to jest poprawne od strony logcznej. Przyjąłem że lokalizacja jest typem zmiennej jak np int. Tak więc funkcja zwraca lokalizacja punkt1, czyli jak by deklaruje od nowa jej wartości powiększone o 1. A następnie są one wypisywane. Lecz jedyne co jest wypisywane to jakiś adres pamięci.

using namespace std;


struct lokalizacja {
	int x;
	int y;
};
	
	lokalizacja wypisanie_punktu(lokalizacja punkt1)
{
  punkt1.x = punkt1.x+1;
  punkt1.y = punkt1.y+1;
  
  return punkt1;
  
		
}
	
int main(){

	lokalizacja punkt1;
	punkt1.x = 5;
	punkt1.y = 6;
	
   	wypisanie_punktu(punkt1);
   	cout<<punkt1.x<<cout<<punkt1.y;
	
	
}
2

Przekazywanie parametru przez wartość i referencję

 cout<<punkt1.x<<cout<<punkt1.y;

Próbujesz wypisać obiekt cout i to jego adres widzisz. Zrób tak (zauważ, że spacje są darmowe, a zwiększają czytelność kodu):

cout << punkt1.x << ", " << punkt1.y << '\n';
0

Rzeczywiście, głupi błąd... faktycznie teraz wypisuje liczby, ale nadal są to 5,6. Jak zrobić żeby wypisywało 6,7 zgodnie z tym co się stało w funkcji (dodanie+1)?

0

W skrocie, jak Chcesz modyfikowac obiekt w funkcji, Wysylaj I Zwracaj wskaznik do niego.

0
lion137 napisał(a):

W skrocie, jak Chcesz modyfikowac obiekt w funkcji, Wysylaj I Zwracaj wskaznik do niego.

Teraz już wiem, ogarnąłem dzięki linkowi od Kq. Dzięki.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.