Avatar billede bolmer Nybegynder
09. februar 2006 - 20:42 Der er 13 kommentarer og
1 løsning

Allokere plads til et pointere array?

Jeg har lavet et array bestående af 5 integer pointere. Nu vil jeg gerne allokere plads til det disse pointere skal pege på og derefter sætte dem til NULL (Senere kan jeg så sætte dem til et tal, hvor jeg først vil tjekke om de er NULL).

int main(void)
{
  int *i[5];
  int j;
  for (j = 0; j < 0; j++)
    {
        i[j]=malloc(sizeof(int));
        i[j]=NULL;   
    }
return 0;
}

Er dette virkelig måden at gøre det på eller er der noget jeg har misforstået?
Avatar billede arne_v Ekspert
09. februar 2006 - 20:59 #1
nej

int main(void)
{
  int *i[5];
  int j;
  for (j = 0; j < 5; j++)
    {
        i[j]=malloc(117*sizeof(int));
    }
return 0;
}

vil give dig 5 arrays med 117 elementer
Avatar billede bertelbrander Novice
09. februar 2006 - 20:59 #2
Jeg tror at der er noget du har misforstået.

Her sætter du i[j] til at pege på nyeligt allokeret hukommelse nok til at gemme én int.
i[j]=malloc(sizeof(int));
Derpå glemmer du adressen på den hukommelse du lige har allokeret.
i[j]=NULL;   

Hvad er det du vil opnå?
Avatar billede arne_v Ekspert
09. februar 2006 - 21:00 #3
jeg har:
slettet =NULL
aendret antal elementer fra 1 til 117
fixet for loekken
Avatar billede bolmer Nybegynder
09. februar 2006 - 21:07 #4
Ja jeg tåger lidt det jeg mener er at man er nødt til at bruge en forløkke til at sætte pointerne i arrayet til at pege på NULL ELLER et pladsen til et tal.

man kan ikke lave det i et hak:

int * i[5];

i = NULL;

dette giver en fejl. Kunne ellers være smart hvis man kunne sætte alle pointere i "i" til at pege på NULL uden at brugen en forløkke.
Avatar billede arne_v Ekspert
09. februar 2006 - 21:09 #5
for loekke eller initialisering
Avatar billede bolmer Nybegynder
09. februar 2006 - 21:12 #6
Jeg mener at hvis man har et array "a" bestående af 4 integer pointere og gerne vil sætte dem til at pege på NULL (er vel det samme som at sige at man initialisere dem til NULL) så må man smide "a[i]" ind i en forløkke.
Avatar billede arne_v Ekspert
09. februar 2006 - 21:34 #7
int *i[5] = { NULL,  NULL,  NULL,  NULL,  NULL };

boer virke

jeg er efterhaanden lidt rusten i nogle af de her ting - har du proevet:

int *i[5] = NULL;

?
Avatar billede arne_v Ekspert
09. februar 2006 - 21:38 #8
nej - det virker vist ikke
Avatar billede nlf Nybegynder
09. februar 2006 - 22:04 #9
int *i[5] = {NULL};

Så sættes alle elementerne i array'et til NULL, så vidt jeg husker.
Avatar billede arne_v Ekspert
09. februar 2006 - 22:06 #10
jep - der var den
Avatar billede bolmer Nybegynder
09. februar 2006 - 23:03 #11
tak! Der skal øses point!
Avatar billede nlf Nybegynder
10. februar 2006 - 10:08 #12
Tja, jeg tager da gerne imod et par af dem, hvis det skal være :P
Men langt størstedelen bør nu gives til arne_v, vil jeg mene...
Avatar billede bolmer Nybegynder
10. februar 2006 - 11:18 #13
hmm kunne ikke lige se hvordan man delte op...
Avatar billede arne_v Ekspert
12. februar 2006 - 19:50 #14
hvis du faar alle til at ligge svar og saa markere alle navnene inden du
klikker accepter saa skulle det virke
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