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

Różnica w działaniu funkcji z użyciem oraz bez użycia wskaźnika w parametrze

Ostatnio zmodyfikowano 2014-01-18 16:17
Autor Wiadomość
marek252
Temat założony przez niniejszego użytkownika
Różnica w działaniu funkcji z użyciem oraz bez użycia wskaźnika w parametrze
» 2014-01-18 16:14:31
Witam.
Moje pytanie jest następujące, czemu taki kod działa poprawnie:
C/C++
#include <string>
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>

void WCZYTAJ( int & x, int & y, int & z )
{
    std::cout << "Podaj trzy liczby: ";
    std::cin >> x >> y >> z;
}

void LICZ_SUM( int a, int b, int c, int & s )
{ s = a + b + c; }

float POLICZ_SR( int x, int y, int z )
{
    int sum = x + y + z;
    // LICZ_SUM( x, y, z, sum );
    return sum / 3.0;
}

void WYSWIETL( int su, float sr )
{
    std::cout << std::endl << "Suma = " << su;
    std::cout << std::endl << "Srednia = " << sr;
}

int main( void )
{
    int a, b, c, suma;
    float srednia;
    WCZYTAJ( a, b, c );
    LICZ_SUM( a, b, c, suma );
    srednia = POLICZ_SR( a, b, c );
    WYSWIETL( suma, srednia );
    return 0;
}
a gdybyśmy zamienili funkcję WCZYTAJ na taką:
C/C++
void WCZYTAJ( int x, int y, int z )
{
    std::cout << "Podaj trzy liczby: ";
    std::cin >> x >> y >> z;
}
to nie działa tak jak bym chciał? To znaczy pojawiają się jakieś dziwne duże liczby. Dlaczego w tych parametrach funkcji musi być podany adres zmiennych a nie samo int x, int y, int z?
Pozdrawiam
P-102452
pekfos
» 2014-01-18 16:17:14
W drugiej wersji WCZYTAJ() przekazujesz argumenty przez wartość, więc modyfikujesz ich lokalne kopie.
P-102453
« 1 »
  Strona 1 z 1