Avatar billede freakofnature Nybegynder
07. april 2003 - 22:53 Der er 3 kommentarer og
1 løsning

structs og pointere

Til det lille, latterlige system nedenunder har jeg et spørgsmål. Hvorfor skal der, når man er igang med funktionerne, puttes pointere (->) inde i funktionen, når der ikke skal når vi springer videre til den næste (geh(dd)).?

hh hej;

hej(&hej);

typedef struct {
    PSTR hej;
} hh;

void hej2(hh* dd){
    dd->hej="HEJ";
    geh(dd);
}

void geh(hh* dd){
    dd->hej="hhh";
}
Avatar billede philox Nybegynder
07. april 2003 - 23:46 #1
Er det ikke fordi du har erklæret dd som en pointer i hej2?
Avatar billede pjakobse Nybegynder
07. april 2003 - 23:48 #2
Det skyldes at inde i funktionerne er du interesseret i at arbejde med feltet inde i strukturen som dd peger på, når du kalder videre er det selve pointeren du ønsker at overføre.

Hvis du oppe i toppen ønsker at arbejde med feltet i strukturen kan du referere "hej.hej", men nede i funktionerne skulle du hvis du ønsker at bruge den samme syntax referere "(*dd).hej", det er så det du kan skrive lidt smartere ved at bruge "dd->hej".

Hvis du har en ny funktion:
  void geh2(PSTR hej)
  {
    hej="eee";
  }
så kalder du den med fra hej2 med "geh2(dd->hej);"
Avatar billede freakofnature Nybegynder
08. april 2003 - 15:34 #3
Det er nu mere det, hvorfor man ikke skal sende dd (i function hej2()) som en reference, ligesom når man sender den helt fra starten...

Eks -> hej(&hej);

Burde geh(dd) functions kaldet ikke også hedde geh(&dd)?
Avatar billede freakofnature Nybegynder
08. april 2003 - 15:49 #4
Jeg læste dit svar lidt grundigere igennem, og nu forstår jeg det!
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