Avatar billede jaffafo Nybegynder
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
Avatar billede nielle Nybegynder
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.
Avatar billede arne_v Ekspert
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.
Avatar billede jaffafo Nybegynder
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?
Avatar billede arne_v Ekspert
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;
}
Avatar billede arne_v Ekspert
09. februar 2008 - 21:31 #5
C er lidt anderledes end Java og C# ...

:-)

og et svar fra mig
Avatar billede nielle Nybegynder
10. februar 2008 - 08:29 #6
Springer over på denne her :^)
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