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

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

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

[ Pregleda: 1871 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Xarios

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



+1 Profil

icon Molim pomoc... pokazivac na sto? i zasto?26.12.2007. u 17:17 - pre 198 meseci
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?
 
Odgovor na temu

fresh.bm

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



+1 Profil

icon Re: Molim pomoc... pokazivac na sto? i zasto?26.12.2007. u 18:09 - pre 198 meseci
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;
 
Odgovor na temu

fresh.bm

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



+1 Profil

icon Re: Molim pomoc... pokazivac na sto? i zasto?26.12.2007. u 18:15 - pre 198 meseci
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.
 
Odgovor na temu

Sephiroth?
Balkan @ net

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



Profil

icon Re: Molim pomoc... pokazivac na sto? i zasto?26.12.2007. u 19:07 - pre 198 meseci
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
 
Odgovor na temu

virtualVoid

Član broj: 161084
Poruke: 698



+28 Profil

icon Re: Molim pomoc... pokazivac na sto? i zasto?26.12.2007. u 19:15 - pre 198 meseci
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?
...
 
Odgovor na temu

Xarios

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



+1 Profil

icon Re: Molim pomoc... pokazivac na sto? i zasto?27.12.2007. u 13:36 - pre 198 meseci
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.
 
Odgovor na temu

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

[ Pregleda: 1871 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

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