Nie zmieniająca się zmienna;

0

Wita mam pewien problem próbowałem zrobić funkcję podobna do "swap", niestety nie chce ona zamieniać wartościami zmiennych. W konsoli wyświetla się, że podmiana jest dobra ale wartości się nie zmieniły.

    void rplace(int a,int b)
    {
        int ab = b;
        int ba = a;

        cout<<ab<<endl;
        cout<<ba<<endl;

        a = ab;
        b = ba;

        cout<<a<<endl;
        cout<<b<<endl;
    } 
0

Próbujesz użyć tej funkcji do zamiany dwóch zmiennych.

int x;
int y;

x=1;
y=12;
rplace(x,y);

Jednak coś takiego nie będzie działać. Zamieniasz lokalne kopie w funkcji rplace. Aby to zmienić musisz zmienić funkcję na taką która przyjmuje wskaźniki do zmiennych ewentualnie mogą być referencje które będą wygodniejsze w użyciu.

1

Funkcja przyjmuje wartość, a nie referencje lub wskaźnik, więc modyfikujesz tylko kopie. Najprościej zmienić

void rplace(int a,int b) 

na void rplace(int &a,int &b)

1

Ta funkcja i tak tworzy dwie zmienne tmp, niepotrzebnie, zobacz sobie nawet na najprostszym przykładzie jak jest std::swap zaimplementowany...

template <class T> void swap ( T& a, T& b )
{
  T c(a); a=b; b=c;
}

Bez kombinowania.

0

@Dawid90dd to może polecieć po całości i zamieniać inty w ogóle bez użycia dodatkowej zmiennej :]

https://ideone.com/ayFKIQ

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0