Avatar billede rdc Nybegynder
18. oktober 2006 - 16:22 Der er 9 kommentarer og
1 løsning

Array problemer

Hej allesammen

Vi er igang med at lave et projekt, men er sjovt nok stødt på et problem :( ..

Problemet er at vi gerne vil definere et array størrelse, udfra en variabel... Et eksempel er dette:

int tjek = lenght(head);
if(tjek != 0){
int antal = lenght(head);
   
int liste[antal];

lenght funktionen ser sådan her ud:
int lenght(struct node* h){
    int antal=0;
    while(h != NULL){
        h = h->next;
        antal++;
    }
    return antal;
}


Når vi prøver at køre vores program får vi følgende fejl:
error C2057: expected constant expression
error C2466: cannot allocate an array of constant size 0
error C2133: 'liste' : unknown size


Nogen ideer om hvad vi kan/skal gøre?

På forhånd mange tak for hjælpen.
Avatar billede jpk Nybegynder
18. oktober 2006 - 16:28 #1
int liste[antal];
duer ikke, da antal ikke er konstant, brug "new":
int* liste = new int[antal];
Avatar billede rdc Nybegynder
18. oktober 2006 - 16:41 #2
men jamen er det der ikke c++? Der kom kun mange flere fejl da vi prøvede det du skrev desværre...

Denne gang får vi så disse fejl, og kan simpelthen ikke se hvor fejlen skulle være:

error C2065: 'new' : undeclared identifier
error C2143: syntax error : missing ';' before 'type'
error C2143: syntax error : missing ';' before '['
Avatar billede jpk Nybegynder
18. oktober 2006 - 17:00 #3
Jo, det er C++ (vi er jo i C/C++ kategorien)

I C skal du bruge malloc (og free til at frigive hukommelsen igen).
Avatar billede rdc Nybegynder
18. oktober 2006 - 17:00 #4
kan du evt give mig en lille eksempel?
Avatar billede jpk Nybegynder
18. oktober 2006 - 17:25 #5
Avatar billede mollevp Nybegynder
18. oktober 2006 - 21:42 #6
Her er et eksempel:
#include <stdlib.h>

/* Allocate space for an array with ten elements of type int. */
int *ptr = malloc(10 * sizeof (int));
if (ptr == NULL) {
  /* Memory could not be allocated, so print an error and exit. */
  fprintf(stderr, "Couldn't allocate memory\n");
  exit(EXIT_FAILURE);
}
/* Allocation succeeded. */
Avatar billede arne_v Ekspert
19. oktober 2006 - 02:23 #7
det er iøvrigt værd at bemærke at konstruktionen med en variabel som
array dimensionering ikke er valid C89 men faktisk er valid C99

så med en tilpas ny compiler bør det virke
Avatar billede rdc Nybegynder
19. oktober 2006 - 13:13 #8
tusind tak for jeres hjælp. jeg ved ikke helt om det er iorden med dig mollevp og arne_v at jeg giver pointene til jpk? ellers lav et svar hver, så til deler jeg.
Avatar billede arne_v Ekspert
19. oktober 2006 - 13:20 #9
fint med mig (jeg har jo strengt taget slet ikke kommet med nogle løsnings
forslag, bare kommenteret omkring forskellen på C89 og C99)
Avatar billede rdc Nybegynder
20. oktober 2006 - 16:05 #10
vil i ikke hjælpe mig med det her: http://www.eksperten.dk/spm/739807
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