Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/mati/domains/forum.programosy.pl/public_html/includes/bbcode.php on line 112
Forum Programosy • Przekazywanie zmiennych w c++
Strona 1 z 1

Przekazywanie zmiennych w c++

PostWysłany: 01 Lut 2013, 17:52
przez Box
Witam,
Podczas pisania programu mam pewien problem i ni cholery nie wiem jak go rozwiązać. Przyznam szczerze, że zagadnienie przekazywania parametrów z funkcji do funkcji jest dla mnie kłopotem, nigdy go nie rozumiałem (ani w Pascalu ani w C++), a teraz na studiach programy tylko na to piszemy.

Nie chcę, byście mi pisali program
Proszę tylko mnie naprowadzić z czego mam skorzystać, by stało się to, co chcę, by się stało, a mianowicie:
1 - mam funkcje wprowadzania danych, która liczy też ile danych zostało wprowadzonych (ilość wyrazów ciągu; nie jest to zmienna sterująca pętlą)
2 - chcę, by ilość wyrazów ciągu uzyskana w pierwszej funkcji była dostępna w drugiej funkcji (np. do warunku pętli for)

Orientuję się w temacie tylko tyle, że istnieje przekazywanie przez wartość, wskaźnik i referencję, ale co do czego, to nie mam pojęcia!

Pomocy :(

Przekazywanie zmiennych w c++

PostWysłany: 01 Lut 2013, 18:34
przez placebo
Trochę chyba nie ten dział, ale odpowiem na główne pytanie przykładem:

Kod: Zaznacz wszystko
#include <iostream>
using namespace std;

int f1(int i)
{
    i ++;
    return i;
}

void f2(int i)
{
    cout << i << "\n";
}

void f3(int &i)
{
    i ++;
}

int main()
{

    int a = 5;
    int wynik = f1(5);

    cout << "\'a\' sie nie zmieni: " << a << "\n";

    f2(wynik);

    f3(wynik);
    cout << "\'wynik\' sie zmieni: " << wynik << "\n";

    return 0;
}



Masz tu 3 funkcje: f1, f2 i f3.

f1:

- pobiera przez wartość liczbę int, zwiększa ją i zwraca, nie modyfikuje wartości argumentu (bo jest przekazany przez wartość właśnie)
- to co zwróci funkcja, możesz przypisać do zmiennej, którą wykorzystasz do przekazania funkcji f2

f2:

- pobiera również przez wartość zmienną i tylko ją wyświetla

f3:

- pobiera przez referencję (czyli zmodyfikuje przekazaną wartość) zmienną i zwiększa ją - w mainie, po wyjściu z funkcji widać, że wartość została zmieniona, w takiej samej sytuacji, przy użyciu funkcji f1 zmienna przekazana zmieniona nie była (bo została przekazana przez wartość, a nie przez referencję)

Przekazywanie zmiennych w c++

PostWysłany: 01 Lut 2013, 22:19
przez Mariusz101
Dokładnie takie sa sposoby przrkazywania. W Twoim przpadku sprawa jest banalna. Pierwsza funkcja zwraca jakas wartosc, ktorej wartosc mozesz uzyc jako parametr przekazywany do drugiej funkcji

Przekazywanie zmiennych w c++

PostWysłany: 01 Lut 2013, 23:23
przez Box
Nie, nie... Moja funkcja nie zwraca żadnej wartości, gdyż nie będę operować na funkcji (zostanie ona wywołana tylko raz w programie), a na jednym z jej parametrów, który ona zmodyfikuje.

Przekazywanie zmiennych w c++

PostWysłany: 02 Lut 2013, 19:10
przez Mariusz101
No dobrze nie zostanie wywołana raz i niech zwroci interesujaca Cie wartosc