Wskazniki i adresy różnych zmiennych

Odpowiedz Nowy wątek
2018-02-25 18:17
Szalony Szczur
0

Hej wiec tak mam tutaj taki o to program i mam problem poniewaz adresy A B C się nie pokrywaja z adresami wsk dla a b c dla wszystkich 3 zmiennych sa takie same a chcialbym zeby kazdy adres byl unikalny ze tak powiem... nie wiem jak to zrobic bo chcialbym dla kazdej zmiennej zachowac wskaznik o nazwie wsk

#include <iostream>
using namespace std;
int elo(float, float);
int elo1(float, float);
int elo2(float, float);
int main()
{
    float a, b, c;
    cout << "podaj wartosci A B i C"
         << "\n";
    cin >> a >> b >> c;
    cout << "wartosc A=" << a << "\n"
         << "wartosc B=" << b << "\n"
         << "wartosc C=" << c << endl;
    cout << "adres A=" << &a << "\n"
         << "adres B=" << &b << "\n"
                                "adres C="
         << &c << "\n";
    float w1 = elo2(a, b);
    float w3 = elo(c, a);
    float w2 = elo1(b, c);
    cout << w1 << "\n";
    cout << w3 << "\n";
    cout << w2 << "\n";
    system("pause");
}
int elo2(float a, float b)
{
    float* wsk = &a;
    cout << "adres zmiennej a za pomoca wskaznika " << wsk << "\n";
    cout << "wartosc zmiennej a za pomoca wskaznika " << *wsk << "\n";
    *wsk = *wsk + b;
    cout << "wartosc zmiennej A=" << a << "\n";
    return a;
}
int elo1(float b, float c)
{
    float* wsk = &b;
    cout << "adres zmiennej b za pomoca wskaznika " << wsk << "\n";
    cout << "wartosc zmiennej b za pomoca wskaznika " << *wsk << "\n";
    *wsk = *wsk + c;
    cout << "wartosc zmiennej B=" << b << "\n";
    return b;
}
int elo(float c, float a)
{
    float* wsk = &c;
    cout << "adres zmiennej c za pomoca wskaznika " << wsk << "\n";
    cout << "wartosc zmiennej c za pomoca wskaznika " << *wsk << "\n";
    *wsk = *wsk + a;
    cout << "wartosc zmiennej C=" << c << "\n";
    return c;
}
edytowany 3x, ostatnio: kq, 2018-02-25 18:24

Pozostało 580 znaków

2018-02-25 18:22
kq
2

Nie wiem czy na pewno o to chodzi, ale do funkcji przekazujesz kopię wartości. Inna zmienna - inny adres. Wartościowa lektura: Przekazywanie parametru przez wartość i referencję


Spóźniłem się. :) - koszalek-opalek 2018-02-25 18:26

Pozostało 580 znaków

2018-02-25 18:26
1
  1. Dlaczego wcięte masz funkcje elo...? To oczywiście "tylko" uwaga czytelnościowa, ale może świadczy o jakimś niezrozumieniu czegoś?
  2. Wskaźniki (adresy), które odzytujesz operatorem & nie są wskaźnikami do zmiennych lokalnych a, b, c zdefiniowanych w funkcji main, ale do lokalnych w poszczególnych funkcjach. Adresy nie są unikalne, bo zmienne lokalne dostają pewnie te same miejsca na stosie, co winnej funkcji.
  3. Oczywiście różne zmienne (nie referncje) mają różne adresy, co możesz sprawdzić odczytując ich wskaźniki w funkcji main...
  4. ... albo przekaując do funkcyj elo... przez referencje (dodając w parametrach & między float a nazwą zmiennej). Sprawdź.

Pozostało 580 znaków

2018-02-25 19:04
Szalony Szczur
0
kq napisał(a):

Nie wiem czy na pewno o to chodzi, ale do funkcji przekazujesz kopię wartości. Inna zmienna - inny adres. Wartościowa lektura: Przekazywanie parametru przez wartość i referencję

Dzieki pomoglo mi to :)

dodalem do funkcji * ampery do maina gwiazdki do elo i smiga :D

Pozostało 580 znaków

2018-02-25 19:05
kq
0

To teraz jeszcze przekaż przez referencję, bo przekazywanie przez wskaźnik z reguły implikuje, że można przekazać nullptr.


Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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