09. februar 2008 - 17:39
Der er
5 kommentarer og 1 løsning
Simpelt C-program crasher
Hej.. jeg prøver at komme igang med noget C programmering, men er stødt på et underligt problem og har ikke fundet et svar så jeg prøver lige her :) Jeg har følgende kode: #include <stdio.h> struct element { int key; struct element *next; }; int main() { struct element *p; p->key = 1; getchar(); return 0; } Hvis jeg fjerne linjen med: p->key = 1; så virker det fint.. Nogen der kan forklare hvad jeg gør forkert og hvorfor man ikke kan gøre sådan der? mvh
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
09. februar 2008 - 17:54
#1
Du har nu heller ikke sat din p til at pege noget bestemt sted hen. Lige nu peger den bare på et tilfældigt sted i hukommelsen.
09. februar 2008 - 17:56
#2
#include <stdio.h> #include <stdlib.h> struct element { int key; struct element *next; }; int main() { struct element *p; p = (struct element *)malloc(sizeof(struct element)); /* <----- */ p->key = 1; getchar(); return 0; } så peger den på noget.
09. februar 2008 - 18:09
#3
Hej takker mange gange for svarene.. jeg havde dog prøvet noget lignende, men der virkede det ikke, men jeg har jo nok lavet en fejl dengang så :) Men nu virker det sgu som det skal :) - C er lidt anderledes end C# og java .. lidt flere ting at tænke på.. Men smider i begge svar?
09. februar 2008 - 18:26
#4
strengt taget bør det være #include <stdio.h> #include <stdlib.h> struct element { int key; struct element *next; }; int main() { struct element *p; p = (struct element *)malloc(sizeof(struct element)); /* <----- */ p->key = 1; free(p); /* mem skal frigives igen */ getchar(); return 0; }
09. februar 2008 - 21:31
#5
C er lidt anderledes end Java og C# ... :-) og et svar fra mig
10. februar 2008 - 08:29
#6
Springer over på denne her :^)
Kurser inden for grundlæggende programmering