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 fra Asus
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