Avatar billede kasparov Nybegynder
15. maj 2002 - 16:50 Der er 2 kommentarer og
2 løsninger

pointer til struct, hvordan?

Har et problem med en pointer til en struct.

  typedef struct {
                    blabla...
  } minStruct;

Jeg har lavet et array af struct's, som jeg initierer ved at smidde en række "tomme" structs ind.
 
  minsSruct mineStructs[ANTALSTRUCTS];

og en pointer til en struct:

  minStruct *structPointer;

og vil gerne have denne pointer til at pege på en bestemt struct i arrayet...

  *structPointer = mineStructs[i];

Dette compiler fint, men giver en segmentation faualt ved kørsel af programmet.

Håber der er noget som kan forklare hvad der er galt... :)
Avatar billede kasparov Nybegynder
15. maj 2002 - 16:52 #1
ok lige en rettelse, arrayet er selvfølgelig af minStruct-typen...
Avatar billede jespernaur Nybegynder
15. maj 2002 - 17:12 #2
Jeg mener du skal skrive

  structPointer = &mineStructs[i];
Avatar billede mbulow Nybegynder
15. maj 2002 - 17:20 #3
Det er fordi:
    *structPointer = mineStructs[i];
IKKE sætter structPointer til at pege på mineStructs[i].

Derimod forsøger du at kopiere mineStructs[i] til adressen structPointer, hvilket ikke vil lykkedes da structPointer sansynligvis ikke vil pege på noget allokeret hukommelse (Derfor din segmentation-fault).

For at få structPointer til at pege på en bestemt struktur, skal du skrive:
    structPointer = &mineStructs[i];

"structPointer =      &      mineStructs[i]"
"structPointer er adressen på mineStructs[i]"
Avatar billede kasparov Nybegynder
15. maj 2002 - 17:27 #4
Spørgsmålet var jo oprindeligt til 30 points, men:

jespermaur, du svarede først og rigtigt, og skal derfor have de points jeg satte spørgsmålet til.

mbulows, din forklaring var betydeligt mere uddybende og satte det med "&"-tegnets betydning fast, derfor også 30 points til dig...

Jeg håber ikke dette er i mod eksperten.dk's pointgivningspolitik...
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