Avatar billede mistral Nybegynder
14. oktober 2004 - 16:19 Der er 6 kommentarer

Returnere et array af pointers

jeg sidder med et indledende projekt i C og bliveri opgavespecifikationen bedt om at skrive en funktion som returnerer et array "indeholdende" pointers. Disse pointers peger til en struct. Kan dette lade sig gøre? Giv venligst et kode eksempel hvis muligt.
Avatar billede arne_v Ekspert
14. oktober 2004 - 16:23 #1
Noget a la:

struct s
{
  int a;
  int b;
};

struct s **f()
{
  struct s **p = (struct s **)malloc(2*sizeof(struct s *));
  p[0] = (struct s *)malloc(sizeof(struct s));
  p[0]->a = 1;
  p[0]->b = 2;
  p[1] = (struct s *)malloc(sizeof(struct s));
  p[1]->a = 3;
  p[1]->b = 4;
  return p;
}
Avatar billede mistral Nybegynder
14. oktober 2004 - 16:29 #2
jow, det har jeg osse tænkt på. men jeg skal returnere et array af pointers fra min function..
eks. hvis du forstår det her eksempel
struct *s[] function()
{

}
Avatar billede arne_v Ekspert
14. oktober 2004 - 16:31 #3
En funktion der skal returnere et array af pointere erklærer man som:

type **navn()
Avatar billede mistral Nybegynder
14. oktober 2004 - 16:48 #4
kan du så fortæller hvorfor den laver kompilerings fejl ved
struct studentType **pointer[] = {NULL};
og ikke
struct studentType **pointer[10] = {NULL};

??
Avatar billede arne_v Ekspert
14. oktober 2004 - 16:59 #5
Compileren skal vide hvor mange elementer der er.

Og hvis den sidst er legal syntax for 10 elemnter alle initialiseret til NULL,
så er den første jo nødvendigvis ikke legal, da compileren ikke kan beregne
antal elementer.
Avatar billede arne_v Ekspert
14. oktober 2004 - 19:11 #6
Hm.

Jeg legede lige lidt med diverse compilere.

Alle dem jeg har accepter

struct studentType **pointer[] = {NULL};

som værende lig med

struct studentType **pointer[1] = {NULL};
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