09. september 2005 - 20:04Der er
6 kommentarer og 1 løsning
C : passing a pointer to a struct
Jeg har lavet et lille eksempel på et større problem jeg har med pointers til structs. jeg pass'er en pointer til en struct til en funktion f(). f() skriver til en en af elementerne i struct'en og returnerer til main(). Når kontrollen er tilbage i main() kan jeg ikke længere skrive det ændrede struct element (int) ud... programmet crasher. :(
Hvad går galt? ps. ingen globale variable!
mvh smackers
======================================
#include <stdio.h>
typedef struct node { int number; }NODE;
void f(NODE * head) { head = (NODE*) malloc(sizeof(NODE)); head->number = 13; printf("number is set to: %d\n", head->number); }
int main(void) { NODE * head; /* even tried "NODE * head = (NODE *) NULL;" */ f(head); printf("head->number = %d\n", head->number); /* program crashes here */ free(head); return 0; }
jeg har forhøjet pointene til 60 i håb om at få forklaret logikken i at skulle bruge en pointer til pointer til struct, så jeg bedre kan rette mit program.
polle007 du modtager naturligvis de først 30 point (hvis dit forslag virker) :)
Din pointer peger på et område i hukommelsen. F.eks. 0x00000001 Dvs f() får en henvisning hertil. Hvis du vil ændre på indholdet af din variabel (pointeren) fra main() skal du have en pointer til denne pointer
Tusind tak for hjælpen!! Det virker som det skal (indtil jeg støder på et nyt problem.. nok når det bliver tid til at implementere merge-sort-funktionen ;)
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.