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; }
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.