Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Molim pomoc... pokazivac na sto? i zasto?

[es] :: C++ programiranje :: C++ za početnike :: Molim pomoc... pokazivac na sto? i zasto?

[ Pregleda: 482 | Odgovora: 5 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Xarios

Član broj: 127199
Poruke: 101
*.tel.net.ba.



Profil

icon Molim pomoc... pokazivac na sto? i zasto?26.12.2007. u 17:17

evo KODA:

SimpleCat* FunctionTwo (SimpleCat *theCat);

int main()
{
cout << "Making a cat...\n";
SimpleCat Frisky;
cout << "Calling FunctionOne...\n";
FunctionOne(Frisky);
cout << "Calling FunctionTwo...\n";
FunctionTwo(&Frisky);
return 0;
}

// functionTwo, passes by reference
SimpleCat* FunctionTwo (SimpleCat *theCat)
{
cout << "Function Two. Returning...\n";
return theCat;
}

nejasan mi je KOD koji sam podebljao (boldao), bio bih zahvalan da mi netko objasni zasto je znak pokazivaca ispred naziva funkcije, kao da je naziv funkcije pokazivac na samu klasu sto nema svrhe? i da li moze bez nejga (neka zamjena) i koja mu j etocna svrha?
26.12.2007. u 17:17 

fresh.bm

Član broj: 162156
Poruke: 28
*.teol.net.

Sajt: www.prkos.890m.com


Profil

icon Re: Molim pomoc... pokazivac na sto? i zasto?26.12.2007. u 18:09
SimpleCat je pretpostavljam klasa,
to što si napisao znači da funkcija vraća pokazivač na klasu SimpleCat;

ovo ti je primjer prenošenja parametara funkciji putem reference, imas dosta o tome u svim relevantnim knjigama o C++;

Hm, pokušaću ti na jednostavan način objasniti,

u prvoj funkciji parametar se prenosi po vrednosti tj. u funkciji se pravi kopija onog objekta koji si prosljedio toj funkciji; u ovom slučaju to je objekat klase SimpleCat, Frisky. Sve što uradiš sa tim objektom unutar funkcije po izlazku iz funkcije se gubi.
Eh, sada. Da bi te promjene imale uticaja na izvorni objekat onda taj objekat moraš prenijeti funkciji preko reference, tj. pomoću pokazivača čime prenosiš adresu Friskya; Sve što uradiš sa njim u funkciji reflektuje se njega, jer se ne pravi nova kopija tog objekta već se radi sa stvarnim objektima;

Code:
 
#include <iostream>
using namespace std;

void f (int,int*);

main()
{
  int i=10;
  int k=10;

  cout << ”main: i:" << i << "k: " << k << endl; // prije funkcije 
  f(i,&k);
  cout << ”main: i:" << i << "k: " << k << endl; 
}
void f (int i, int *k)
{
  cout << "f: i:"<< i << " k: " << *k << endl;
  *k=20;
  cout << "f: i:"<< i << " k: " << *k << endl;
}


pogledaj ovaj primjer mozda ti bude jasnije;
"A ko behu oni divi,
koji su te napred zvali,
koji su te ojačali,
koji su ti krila dali?
To bejahu ideali!"
J.J.Zmaj
26.12.2007. u 18:09 

fresh.bm

Član broj: 162156
Poruke: 28
*.teol.net.

Sajt: www.prkos.890m.com


Profil

icon Re: Molim pomoc... pokazivac na sto? i zasto?26.12.2007. u 18:15
Code:
#include <iostream>
using namespace std;

void f (int,int&);

main()
{
  int i=10;
  int k=10;

  cout << "ain: i:" << i << "k: " << k << endl; // prije funkcije 
  f(i,k);
  cout << "main: i:" << i << "k: " << k << endl; 
}
void f (int i, int &k)
{
  cout << "f: i:"<< i << " k: " << k << endl;
  k=20;
  cout << "f: i:"<< i << " k: " << k << endl;
  
  system("pause");
}


PS. pitao si da li može na drugi način, evo to ti je ista stvar samo preko reference.
"A ko behu oni divi,
koji su te napred zvali,
koji su te ojačali,
koji su ti krila dali?
To bejahu ideali!"
J.J.Zmaj
26.12.2007. u 18:15 

Sephiroth?
Biondic Denis
Balkan @ net

Član broj: 79406
Poruke: 77
*.bi2.dlp254.bih.net.ba.



Profil

icon Re: Molim pomoc... pokazivac na sto? i zasto?26.12.2007. u 19:07
Koliko sam ja skontao covjek jednostavno pita sta znaci SimpleCat* FunctionTwo... SimpleCat* ti je vrsta return vrijednosti funkcije FunctionTwo. Kao sto mozes imati

Code:

int func()
void func()
string func()
int main()  // i main je funkcija naravno ...


zasto onda ne bi mogao imati i vrstu povratne vrijenosti SimpleCat* ? Funkcija jednostavno "vraca" pokazivac na neki objekat klase SimpleCat, koji je ili kreiran unutar te funkcije, ili samo proslijedjen iz argumenta u return, kao u tvome primjeru. Btw, ova return vrijednost se nigdje ne koristi u tvome programu
Dvije stvari su bezgranicne : svemir i ljudska glupost, a za ovo prvo nisam ni siguran.
~ Albert Einstein
26.12.2007. u 19:07 

virtualVoid
Herzegovina

Član broj: 161084
Poruke: 181
77.221.8.*



Profil

icon Re: Molim pomoc... pokazivac na sto? i zasto?26.12.2007. u 19:15
A opet moze biti i da funkcija pokazuje na niz objekata klase SimpleCat, kao npr.

Code:
Klasa* a;
a=new Klasa[3]; 


Jesam li u pravu?
Yah...
26.12.2007. u 19:15 

Xarios

Član broj: 127199
Poruke: 101
*.tel.net.ba.



Profil

icon Re: Molim pomoc... pokazivac na sto? i zasto?27.12.2007. u 13:36
Hvala svima na odgovorima! Sada mi sve jasno.
Ostalo sam sve bio razumio i znao osim ovoga: SimpleCat* FunctionTwo

Najvise me bunio asteriks * na mjestu gdje i jeste jer nisam navikao do sada da bude pored naziva funkcije nego pored naziva promjenjive(varijable). Ali naravno cilj je nauciti citav c++ pa tako da vam velika hvala za ove odgovore.
27.12.2007. u 13:36 

[es] :: C++ programiranje :: C++ za početnike :: Molim pomoc... pokazivac na sto? i zasto?

[ Pregleda: 482 | Odgovora: 5 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.