Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Przypisywanie zwróconej wartości do zmiennej

Ostatnio zmodyfikowano 2025-06-04 00:22
Autor Wiadomość
domin568
Temat założony przez niniejszego użytkownika
[C++] Przypisywanie zwróconej wartości do zmiennej
» 2013-02-20 18:23:03
Witajcie, mam pewiem problem, otóż gdy mam taki kod
C/C++
#include <iostream>
#include <string>
using namespace std;
int przechowywacz( int liczba );
int main() {
    int a = 345;
    cout << " Siema " << endl;
    cout << a << endl;
    przechowywacz( a );
    cout << a << endl;
   
    return 0;
}
int przechowywacz( int liczba )
{
    liczba = 543;
   
    return liczba;
   
   
}

To myślałem że jeżeli przechowywacz przypisze liczba inną wartość i zwróci ją do a, a tak nie jest. To jak to w końcu jest? Co return zwraca? Po co jest zwracanie?
P-76580
Berux
» 2013-02-20 18:28:04
Do takiego przypisania możesz użyć referencji lub wskaźnika. Jeżeli do tego nie doszedłeś zamień
przechowywacz( a );
 na
a = przechowywacz( a );
 - wtedy przypisujesz zwróconą wartość do tej zmiennej.
P-76581
domin568
Temat założony przez niniejszego użytkownika
» 2013-02-20 18:33:09
I jeszcze takie pytanie , bo na forum jestem nowy ( Kod działa dzięki , doszedłem do wskaźników i nawet dalej tylko jakoś ciągle wskaźników nie moge ogarnąć ) jak umieścić kod w tych znacznikach ? , bo mój edytor nowej wiadomości jest jak by to powiedzieć "goły" i nie ma żadnych opcji ??

» KursyKurs STC kurs - xevuel
P-76582
abdi
» 2013-02-20 18:34:36
W momencie wywołania funkcji
przechowywacz( a )
, a jest przekazywane jako argument, a funkcja operuje na jego kopii.
Oznacza to że zmiana wartości zmiennej a wewnątrz funkcji, nie zmieni wartości poza funkcją.

Funkcja zwraca tą wartości za pomocą return, i tak jak napisał @up można uzyskać pożądany efekt  za pomocą
a = przechowywacz( a )
Wtedy wartość zwracaną przypiszesz do a.
P-76583
termistor
» 2025-06-04 00:22:18
Witaj domin568!

Zwracam się do Ciebie z odpowiedzią na dwa pytania, które postawiłeś.

1. Umieszczanie kodu w znacznikach
Na forum STC kod C++ umieszcza się w tzw. znacznikach kodu - czyli między
 a
. W edytorze, nawet jeśli nie ma graficznych przycisków, możesz po prostu ręcznie wpisać te znaczniki w odpowiednich miejscach.

Na przykład:

#include <iostream>
#include <string>
using namespace std;

W praktyce wygląda to tak:
- przed wklejeniem kodu wpisz

- wklej swój kod
- po zakończeniu kodu wpisz

Wtedy kod będzie poprawnie sformatowany i czytelny dla innych użytkowników forum.

2. Funkcje, return i przekazywanie parametrów
Twój problem z funkcją przechowywacz wynika z podstawowej zasady C++: przekazywanie parametrów przez wartość tworzy ich kopię.


int przechowywacz(int liczba)
{
    liczba = 543;
    return liczba;
}

W tym przypadku:
- funkcja otrzymuje kopię zmiennej a
- zmienia wartość kopii na 543
- zwraca tę wartość
- oryginalna zmienna a pozostaje bez zmian

Dlatego musisz przypisać wartość zwróconą przez funkcję do zmiennej a:

a = przechowywacz(a);

Wtedy oryginalna zmienna a otrzyma nową wartość zwróconą przez funkcję.

Jeśli chcesz, aby funkcja modyfikowała zmienną bezpośrednio, musisz użyć:
1. Referencji - np. int przechowywacz(int& liczba)
2. Wskaźnika - np. int przechowywacz(int* liczba)

Podejrzewam, że masz trudności z wskaznikami. Jeśli chcesz, mogę Ci wytłumaczyć, jak one działają - to bardzo przydatne narzędzie w C++.
P-182458
« 1 »
  Strona 1 z 1