Tema: malo C++!
View Single Post
Staro 14.03.2006., 00:10   #25
akegalj
Registered User
 
Datum registracije: Jan 2006
Lokacija: Zagreb
Postovi: 23
Citiraj:
Autor marioxp
[FONT="Arial"]
Pitanje je: kako vratiti iz funkcije dvodimenzionalno polje?
Ja sam pocetnik u c++ ali mislim da znam dovoljno da poblize objasnim ovo pitanje! Samo da znas nisam citao cijeli kôd koji si prilozio jer sam sada umoran, no ovako stoje stvari:
Prvenstveno dvodimenzjonalna polja se na neki nacin i ostvaruju preko pokazivaca na pokazivace!
npr. kada imas int *p[]={1,2,3,4,5}; ili char *p="Kidam nalijevo!";
=> tu ti je p pokazivac na polje(odnosno prvi clan polja) prirodnih brojeva ili znakova. Ono sto ce program napraviti jest naci slobodnu memoriju daovoljno veliku da smijesti taj objekat(polje 1,2,3,4,5 ili niz znakova "Kidam nalijevo");

e npr.e kada imas int *p[]={{1,2,3},{4,5,6},{7,8,9}};
ili char *p[]={"ponedjeljak","utorak","srijeda","cetvrtak"}
=> tu se radi o dvodimenzjonalnom polju. Nemoj da te zbuni sto je tu samo jedna zvjezdica jer ce recimo u drugom primjeru on stvoriti p koji pokazuje na polje pokazivaca na char. Znaci p je zapravo polje pokazivaca koji pokazuju na dane u tjednu : p[0] bit ce pokazivac na prvi dan, p[1] na drugi dan,...
dok p[0][0] ce biti 'p', p[0][1] ce biti 'o', p[2][0] ce biti 's',...

Bit ovoga je bio da ti pokazem da dvodimenzjonalno polje nije nista drugo nego pokazivac na pokazivac. Ako znas vratiti jednodimenzjonalno polje(pokazivac na to polje), tada ti je dvodimenzjonalno polje polje pokazivaca gdje svaki od tih pokazivaca pokazije na svoje jednodimenzjonalno polje(zapravo imas polje jednodimenzjonalnih polja)

Kada ti dinamicki alociras objekt(polje), siguran si da ga tvoj program nece automatski cistiti(ako koristis standardni c,c++), tako da onda mozes kao rezultat funkcije vratiti pokazivac na pokazivac sa return(odnosno vratis adresu pokazivaca na pokazivac.

npr.
char **nesto(){
char (*p)[10]=new char[][10];
/* sada tu nesto pametno radis
return p;
}

{char **k=0;
k=nesto();
}
=>nisam siguran ali ovo bi trebalo raditi! Nebudes li skuzio konkretno cu pogledati primjer koji si naveo pa cemo vidit( nemoj me uzeti za rijec da sam sve dobro napisao, teske su mi oci : flyingey )!
akegalj je offline   Reply With Quote