Forum » Programiranje » kazalci, funkcije ipd...
kazalci, funkcije ipd...
Monster ::
Lp!
evo imam eno vprasanje... Imam funkcijo ki v memory naloži en array vektorjev... Sedaj pa me zanima ce lahko ta dotična funkcija vrne nazaj kazalec na tale array...
tule je moj del... ce ma kdo kaj lepšega enostavnješega naj prosim objavi ;)
//Napol...
static unsigned int ReadObjObject( char* dat, unsigned int StVektorjev, unsigned int StFaces, unsigned int StVekTextur )
{
struct Vektor3d *k, vektorji[StVektorjev];
FILE *fdat;
char c, stream[100];
int index = 0;
fdat = fopen( dat, "r" );
//Dobivanje podatkov...
index = 0;
while( !feof( fdat ) )
{
c = fgetc(fdat);
switch( c )
{
case 'v':
c = fgetc( fdat );
if( c == ' ')
{
//Navadni vektor, damo v memory...
fscanf( fdat, "%f %f %f", &vektorji[index].x, &vektorji[index].y, &vektorji[index].z );
//printf("\nVektor;%d; %f :: %f :: %f ", index, vektorji[index].x, vektorji[index].y, vektorji[index].z );
index++;
break;
}
// else if( c == 't')
// {
// //Vektorji od teXtur...
// data.StVekTextur++;
// break;
// }
// case 'f':
// //Faces...
// data.StFaces++;
// break;
default:
break;
}
//butnemo v new line
fgets( stream, 100, fdat );
}
//Zapremo datoteko...
fclose( fdat );
return k;
}
hvala v naprej
evo imam eno vprasanje... Imam funkcijo ki v memory naloži en array vektorjev... Sedaj pa me zanima ce lahko ta dotična funkcija vrne nazaj kazalec na tale array...
tule je moj del... ce ma kdo kaj lepšega enostavnješega naj prosim objavi ;)
//Napol...
static unsigned int ReadObjObject( char* dat, unsigned int StVektorjev, unsigned int StFaces, unsigned int StVekTextur )
{
struct Vektor3d *k, vektorji[StVektorjev];
FILE *fdat;
char c, stream[100];
int index = 0;
fdat = fopen( dat, "r" );
//Dobivanje podatkov...
index = 0;
while( !feof( fdat ) )
{
c = fgetc(fdat);
switch( c )
{
case 'v':
c = fgetc( fdat );
if( c == ' ')
{
//Navadni vektor, damo v memory...
fscanf( fdat, "%f %f %f", &vektorji[index].x, &vektorji[index].y, &vektorji[index].z );
//printf("\nVektor;%d; %f :: %f :: %f ", index, vektorji[index].x, vektorji[index].y, vektorji[index].z );
index++;
break;
}
// else if( c == 't')
// {
// //Vektorji od teXtur...
// data.StVekTextur++;
// break;
// }
// case 'f':
// //Faces...
// data.StFaces++;
// break;
default:
break;
}
//butnemo v new line
fgets( stream, 100, fdat );
}
//Zapremo datoteko...
fclose( fdat );
return k;
}
hvala v naprej
Ka zaboga...
OwcA ::
Čemu enostavno vektorji ne usvariš na heapu in vrenš kazalec do njega (ob ustrezno popravljeneni deklaraciji)?
Še par opažanj:
Kaj počne k? Gotovo imaš dober razlog za packanje v C-ju?
Še par opažanj:
Kaj počne k? Gotovo imaš dober razlog za packanje v C-ju?
Otroška radovednost - gonilo napredka.
Zgodovina sprememb…
- spremenilo: OwcA ()
Vesoljc ::
treba povedat, da ko se funkcija zakljuci, se vse spremenljivke, ki so alocirane samodejno (nedinamično) na stacku, tudi samodejno pocistijo. torej tisti kazalec, ki ga ti vrnes, kaze na junk memeory...
kot je owca reku, alociraj na heapu (dinamicno, new[] operator) ter vrni ta pointer. ne pozabit, da ga moras kasneje tudi sam pocisiti (delete[]).
kot je owca reku, alociraj na heapu (dinamicno, new[] operator) ter vrni ta pointer. ne pozabit, da ga moras kasneje tudi sam pocisiti (delete[]).
Abnormal behavior of abnormal brain makes me normal...
Monster ::
aham to sm pl skuzo ja... sm ka mi lahko en da en majhen primerček kk naj pol z eno drugo funkcijo dobim podatke z tistega arraya pa to... oziroma ce mi eDn naredi en butast ;) primerček kk z eno funkcijo nafilam en arrayček in potem z drugo funkcijo berem ta arreyček pa to.. HaVala VnaPrEj
Ka zaboga...
Vesoljc ::
klikni na prvi link, ki ti ga vrne
#include <iostream> int* kreiraj_nafilaj(int velikost) { int* lpPolje = new int[velikost]; for(int i = 0; i < velikost; ++i) lpPolje[i] = i; return(lpPolje); } void izpisi(int* lpPolje, int velikost) { using namespace std; if(lpPolje == 0) cout << "polje je prazno!" << endl; else for(int i = 0; i < velikost; ++i) cout << lpPolje[i] << endl; } int main(int argc, char *argv[]) { using namespace std; int* lpKazalec = kreiraj_nafilaj(100); izpisi(lpKazalec, 100); cout << lpKazalec << endl; // naslov prve elementa v polju delete[] lpKazalec; cout << lpKazalec << endl; // po brisanju se vedno kaze tja (junk mem) lpKazalec = 0; // varnost!!! system("pause"); }
Abnormal behavior of abnormal brain makes me normal...
Zgodovina sprememb…
- spremenil: Vesoljc ()
OwcA ::
Še vedno navijam za C++ in objektno rešitev (ter uporabo STL-ja).
Otroška radovednost - gonilo napredka.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C++] Ali je mogoče?Oddelek: Programiranje | 1620 (1096) | Ciklamen |
» | programiranje v c++Oddelek: Programiranje | 1893 (1659) | Tutankhamun |
» | [C++] prevajalnik hoce konstruktor za strukturoOddelek: Programiranje | 2592 (2296) | Tr0n |
» | [c++] Pomoč pri izdelavi std::vector "wrapperja"Oddelek: Programiranje | 1579 (1480) | zhigatsey |
» | Katero workstation graficno?Oddelek: Kaj kupiti | 1672 (1392) | Senitel |