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

[c++] Zamiana wartości zmiennych przy użyciu wskaźników

Ostatnio zmodyfikowano 2013-04-14 16:02
Autor Wiadomość
Małolatt
Temat założony przez niniejszego użytkownika
[c++] Zamiana wartości zmiennych przy użyciu wskaźników
» 2013-04-14 13:44:01
Witam Wszystkich użytkowników. mam pytanie odnośnie programowania obiektowego a mianowicie wskaźników.
mam za zadanie napisać program w którym będzie znajdował się taki element jak :
 "przekazywanie argumentów i zwracanie wartości przez funkcje poprzez: wskaźnik"

Wymyśliłem sobie program który zamieni ze sobą 2 liczby po czym zwróci nam wynik z funkcji czy to jest dobrze napisane ?
C/C++
#include <iostream>
using namespace std;
int * zamien( int * a, int * b, int * c )
{
    * c =* a;
    * a =* b;
    * b =* c;
    return a, b, c;
}
int main()
{
    int a = 3;
    int b, c;
    cout << "Zmienna a wynosi: " << a << endl;
    cout << "Podaj wartosc zmiennej b: ";
    cin >> b;
    zamien( & a, & b, & c );
    cout << "zmienna a po zamianie wynosi: " << a << endl;
    cout << "zmienna b po zamianie wynosi: " << b;
    return 0;
}
Nie wiem czy dobrze zrozumiałem działanie wskaźników dlatego bardzo proszę was o pomoc . :]
P-80552
pekfos
» 2013-04-14 14:04:18
mam pytanie odnośnie programowania obiektowego a mianowicie wskaźników.
?

czy to jest dobrze napisane ?
C/C++
//..
return a, b, c;
//..
Nie.
P-80554
Małolatt
Temat założony przez niniejszego użytkownika
c++ Wskaźniki
» 2013-04-14 14:15:58
czy możecie mi powiedzieć gdzie robię błąd ?
C/C++
#include <iostream>
using namespace std;

void * zamien( int * a, int * b )
{
    cout << "\n*** Zwracanie poprzez wskaznik ***";
    int c;
    c =* a;
    * a =* b;
    * b = c;
}
int main()
{
    int a = 3;
    int b;
    cout << "Zmienna a wynosi: " << a << endl;
    cout << "Podaj wartosc zmiennej b: ";
    cin >> b;
    zamien( & a, & b );
    cout << "\nzmienna a po zamianie wynosi: " << a;
    cout << "\nzmienna b po zamianie wynosi: " << b << endl;
    return 0;
}
P-80556
pekfos
» 2013-04-14 14:43:36
czy możecie mi powiedzieć gdzie robię błąd ?
A możesz powiedzieć, jaki błąd?
P-80560
Małolatt
Temat założony przez niniejszego użytkownika
c++ Wskaźniki
» 2013-04-14 15:06:10
błąd w sensie takim że tutaj mam tylko przekazywanie wartości przez wskaźnik a chciałbym aby też było zwracanie wartości i nie wiem czy w ogóle da się to zrobić na tym przykładzie
P-80562
pekfos
» 2013-04-14 15:12:14
To zwróć coś. W czym problem?
P-80563
unimator
» 2013-04-14 16:02:18
Na przykładzie najłatwiej zrozumieć. Teraz analogicznie przerób swoją funkcję dla 3 zmiennych.
C/C++
void swapper( int * p_a, int * p_b ) //1. wersja
{
    int temp = * p_a;
    * p_a = * p_b;
    * p_b = temp;
    return;
}

void swapper( int & a, int & b ) //2. wersja
{
    int temp = a;
    a = b;
    b = temp;
    return;
}

int main()
{
    int uA = 1, uB = 111222;
    printf( "Przed zmiana: uA = %i, uB = %i\n", uA, uB );
    swapper( & uA, & uB ); //1. wersja
    printf( "Po zamianie: uA = %i, uB = %i\n", uA, uB );
    swapper( uA, uB ); //2. wersja
    printf( "Po zamianie (wersja z referencja): uA = %i, uB = %i\n", uA, uB );
    getchar();
    return 0;
}
P-80564
« 1 »
  Strona 1 z 1