» »

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
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?
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[]).
Abnormal behavior of abnormal brain makes me normal...

OwcA ::

Zgleda kot C. Nič new, le malloc(). ;)
Otroška radovednost - gonilo napredka.

Vesoljc ::

heh
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 ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C++] Ali je mogoče?

Oddelek: Programiranje
161620 (1096) Ciklamen
»

programiranje v c++

Oddelek: Programiranje
51893 (1659) Tutankhamun
»

[C++] prevajalnik hoce konstruktor za strukturo

Oddelek: Programiranje
182592 (2296) Tr0n
»

[c++] Pomoč pri izdelavi std::vector "wrapperja"

Oddelek: Programiranje
81579 (1480) zhigatsey
»

Katero workstation graficno?

Oddelek: Kaj kupiti
191672 (1392) Senitel

Več podobnih tem