GRY-Online.pl --> Archiwum Forum

c++ - jak zmienic wartosc parametru, ktory nie jest przekazywany przez r...

14.01.2005
21:41
smile
[1]

fifalk [ fifalkowiec ]

c++ - jak zmienic wartosc parametru, ktory nie jest przekazywany przez r...

mam przykladowy program:

void zmien(int licz)

licz++;


void main()

int liczba;
cin>>liczba;
zmien(liczba);
cout<<endl<<liczba;


chodzi mi o to, jak zmienic wartosc zmiennej liczba, jesli parametr NIE jest przekazywany przez referencje. domyslam sie, ze trzeba zastosowac wskazniki, jednak nie wiem jak je w tym przypadku zastosowac.

odpada zmiana funkcji na taka, zeby parametry byly przekazywane przez referencje.

14.01.2005
21:48
[2]

Esqualante [ Jyhad Baghadyr ]

void zmien(int * licz) //licz jest wskaznikiem

(*licz)++; //zmiana wartosci zapisanej pod adresem, ktory jest zzpisany we wskaźniku licz :]


void main()

int liczba
cin >> liczba;
zmian(&liczba); //przekazanie adresu zmiennej
cout << endl << liczba;

14.01.2005
21:51
[3]

fifalk [ fifalkowiec ]

zle sie wyrazilem :-) generalnie chodzi mi o to, zeby lista parametrow pozostala nie zmieniona pod zadnym wzgledem - musi zostac void zmien(int licz).
jest to uproszczona wersja bardziej zlozonego programu, w ktorym lista parametrow roznych funckji musi byc taka sama, jednak raz musze te parametry przekazac przez referencje, a raz przez wartosc...

14.01.2005
22:02
[4]

Esqualante [ Jyhad Baghadyr ]

Średnio rozumiem, o co Tobie chodzi...

Funkcja void zmien(int licz) nie zmieni wartosci liczby w mainie, bo licz jest kopią zmiennej liczba i operacje wykonywane są na kopii a nie na prawdziwej zmiennej.

Można zastosować przeciążenie funkcji -> poza istniejącą, przekazującą przez wartość, tworzy się funkcję o trochę innym prototypie (np void zmien(int * licz)). Wtedy, w zależności od parametrów zostaje wywołana odpowiednia funkcja, np

zmien(liczba) - powoduje wywolanie zwyklej funkcji.
zmien(&liczba) - powoduje wywolanie funkcji ze wskaznikiem w parametrze.

14.01.2005
22:14
smile
[5]

fifalk [ fifalkowiec ]

hmm.. o przeciazaniu nie pomyslalem, zaraz sprobuje

14.01.2005
22:28
[6]

fifalk [ fifalkowiec ]

eee jednak dalej nie wiem jak sobie poradzic...
mam taki typ:
typedef void (*Funkcja)(int);

pozniej
Funkcja funkcja;

i teraz chce zeby bylo tak - raz funckja typu Funkcja zmienia wartosci zmiennych w mainie (podanych jako parametr), a raz nie. zaleznie od tego, jaka funkcje podstawie pod "funkcja".
jasniej? :-)

15.01.2005
09:49
[7]

fifalk [ fifalkowiec ]

up?

15.01.2005
12:42
[8]

fifalk [ fifalkowiec ]

moze jednak, ktos wie...? przedstaiwe problem jeszcze raz, inaczej:
mam typ:
typedef void (*Funkcja)(int);

pozniej:
Funkcja funkcja;

i 2 funkcje:
void fun1(int liczba);
void fun2(int &liczba);

jak rozwiazac problem, abym pod "funkcja" raz mogl podstawic "fun1", a innym razem "fun2"? czyli, zeby raz "funkcja" zmieniala wartosc zmiennej w mainie(), a raz, zeby tej wartosci nie zmieniala.

© 2000-2026 GRY-OnLine S.A.