Avatar billede krukken Juniormester
15. oktober 2004 - 12:52 Der er 7 kommentarer og
1 løsning

returnering af point til array

Jeg bruger denne version:
int *f()
{
  int *buf = new int[10];
  // fyld noget i buf
  return buf;
}

Gider I at lave et eksempel hvor pointeren er blevet returneret - og hvor alle pladser i arrayet udskrives?
Avatar billede arne_v Ekspert
15. oktober 2004 - 12:55 #1
Jeg har smidt noget her http://www.eksperten.dk/spm/548193
Avatar billede segmose Nybegynder
15. oktober 2004 - 12:58 #2
const int siz = 10;
int *f(const int arraysize) {
  int *buf = new int[arraysize];
  // fyld noget i buf
  return buf;
}

void use() {
  int *it = f(siz);
  for (int i = 0; i < siz; ++i)
    printf("it[%d] = %d", i, it[i]);
  return;
}
Avatar billede krukken Juniormester
15. oktober 2004 - 15:57 #3
Hmm - det er lidt sjovt....

Hvis jeg gøre det på din måde altså med i=0 og ++i, så udskriver jeg en forkert plads. Men hvis jeg tæller en ud over arrayet, så ligger det sidste tal der. Så jeg sætter i=1. Har du en god forklaring på det?
Avatar billede krukken Juniormester
15. oktober 2004 - 16:30 #4
jeg returnere et array at char. Problemet er bare at når jeg udskriver dem, så er det kun det føste bogstav har hver "string" der bliver udskrevet. Hvordan laver jeg det om?
Avatar billede arne_v Ekspert
15. oktober 2004 - 16:32 #5
Hvis du returnerer char** så:

char **p = f();
for(int i=0;i<10;i++) cout << p[i] << endl;
Avatar billede arne_v Ekspert
15. oktober 2004 - 16:32 #6
eller

char **p = f();
for(int i=0;i<10;i++) printf("%s\n",p[i]);
Avatar billede krukken Juniormester
15. oktober 2004 - 16:38 #7
så hedder det vel ikke
char temp = new char[antal]?
Avatar billede arne_v Ekspert
15. oktober 2004 - 16:41 #8
Nej.

typedef char *charptr;

...

charptr *buf = new charptr[antalstrenge];
for(int i=0;i<antalstrenge;i++) buf[i] = new char[strenglen+1];
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