Avatar billede f2f4 Novice
25. januar 2006 - 15:31 Der er 8 kommentarer og
1 løsning

Pointer kludder

Hvorfor virker nedenstående ikke!?

TAbc {
  double d;
}

::

TAbc *Abc = new TAbc[10]

::

void FreeAbc(TAbc *lAbc)
{
    if (lAbc != NULL)
    {
        delete [] lAbc;
        lAbc = Null;
    }
}

::

FreeAbc(Abc);

Når jeg 'stepper' ind i FreeAbc peger Abc og lAbc på det samme stykke memmory, men det er kun lAbc der får værdien NULL!!!???

Mange tak for eventuel hjælp!

Mvh. Morten
Avatar billede f2f4 Novice
25. januar 2006 - 15:50 #1
Hvis jeg giver lAbc[0]->d en værdi inde i FreeAbc, fremfor at nedlægge den. Ja så er værdien ganske korrekt også i Abc[0]->d !!! (jeg bruger C++Builder 4)
Avatar billede arne_v Ekspert
25. januar 2006 - 17:41 #2
C++ er default call by value

saa du saetter en kopi af en pointer til NULL
Avatar billede f2f4 Novice
26. januar 2006 - 08:44 #3
Tak. Det kom jeg også frem til, men hvordan gør man så dette!? Synes jeg har prøvet alverden!
Avatar billede nlf Nybegynder
26. januar 2006 - 10:09 #4
enten via pointer:
void FreeAbc(TAbc **lAbc)
eller via reference:
void FreeAbc(TAbc &*lAbc)
Avatar billede f2f4 Novice
26. januar 2006 - 11:23 #5
|-:
Nu opgiver jeg dette, men tak for 'hjælpen'. I har sikkert ret men jeg kan ikke få det til at virke. Godt jeg normalt ikke sidder med C! Det kan ikke passe man skal bruge så lang tid på noget så simpelt.
Men tak for svar til jer begge.
Avatar billede f2f4 Novice
26. januar 2006 - 11:24 #6
Se der er C# tusinde gange bedre! (-;
Avatar billede arne_v Ekspert
26. januar 2006 - 13:47 #7
void FreeAbc(TAbc &*lAbc)

er mest transperent

og jeg kan ikke se at

void f(int & i)

er vanskeligere end

void f(ref int i)
Avatar billede lars314 Nybegynder
26. januar 2006 - 21:26 #8
Det er simplere hvis du ungår at bruge "gammeldags" arrays.
Brug std::vector e.l. når du aligevel bruger c++.
Avatar billede f2f4 Novice
08. februar 2006 - 17:28 #9
lukket
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



Seneste spørgsmål Seneste aktivitet
I dag 08:31 HVIS med datoer Af HHA i Excel
I går 20:12 Ældre lysstofarmatur (2011) Af ErikHg i Fri debat
I går 14:05 Numerisk liste Af AND i Excel
I går 09:39 Ændre nuller til ovenstående tal Af boro23 i Excel
I går 06:47 videoclip - icon Af Malm i Andet software