Avatar billede krukken Juniormester
08. oktober 2004 - 11:52 Der er 18 kommentarer og
1 løsning

Funktion der returnere array af int,duoble eller string

Hvordan er det nu lige man returnere et int, double eller et string array fra en funktion?

prototype:

array(int) FUnktionDetReturnereArray()
{
//Bla bla
}
Avatar billede arne_v Ekspert
08. oktober 2004 - 11:55 #1
static int buf[10];

int *f()
{
  // fyld noget i buf
  return buf;
}
Avatar billede arne_v Ekspert
08. oktober 2004 - 11:55 #2
int *f()
{
  int *buf = new int[10];
  // fyld noget i buf
  return buf;
}
Avatar billede arne_v Ekspert
08. oktober 2004 - 11:56 #3
void f(int *buf)
{
  // fyld noget i buf
}
Avatar billede plx Nybegynder
08. oktober 2004 - 11:56 #4
arne kom først, så skriver jeg bare noget andet så. Du kan ikke retunrere et array, men kun en pointer til det.
Avatar billede krukken Juniormester
08. oktober 2004 - 11:59 #5
okay:-)

Hvis man nu får en "array af" bits som man vil manipulere - hvad skal der så gives som parameter til funktionen?
Avatar billede arne_v Ekspert
08. oktober 2004 - 13:11 #6
Hvordan repræsenterer du de bits ?
Avatar billede krukken Juniormester
08. oktober 2004 - 13:13 #7
Jeg ved det ikke endnu. Men kan man ikke lave et char array? Kan man så ikke manipulere dette array på bitniveau?
Avatar billede arne_v Ekspert
08. oktober 2004 - 13:20 #8
Du kan godt manipulere bits i et char array, men type mæssigt er det
så stadigt et char array.
Avatar billede krukken Juniormester
08. oktober 2004 - 13:22 #9
Er der en bedre måde at gøre det på?
Avatar billede arne_v Ekspert
08. oktober 2004 - 13:27 #10
Med fast længde vil jeg foreslå en struct med bit felter !
Avatar billede krukken Juniormester
08. oktober 2004 - 13:28 #11
okay - tak.
Avatar billede krukken Juniormester
08. oktober 2004 - 13:28 #12
Ligger du et svar arne_v?
Avatar billede arne_v Ekspert
08. oktober 2004 - 13:34 #13
kommer her
Avatar billede bertelbrander Novice
08. oktober 2004 - 23:48 #14
Man kan også bruge en std::vector<bool>, den pakker en bool pr bit, og kan returneres fra en funktion.
Avatar billede krukken Juniormester
15. oktober 2004 - 11:41 #15
Hvordan modtaget man så egentligt den pointer til arrayet? Altså foreksempel i en anden klasse?
Avatar billede arne_v Ekspert
15. oktober 2004 - 11:57 #16
int *p = f();

int *p = f();

int *p = new int[10];
f(p);
Avatar billede krukken Juniormester
15. oktober 2004 - 12:38 #17
arve_v?

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

Gider du 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:53 #18
#include <iostream>

using namespace std;

int *f()
{
  int *buf = new int[10];
  for(int i=0;i<10;i++) buf[i]=i;
  return buf;
}

int main()
{
  int *p = f();
  for(int i=0;i<10;i++) cout << p[i] << endl;
  delete[] p;
  return 0;
}
Avatar billede arne_v Ekspert
15. oktober 2004 - 12:54 #19
Jeg sidder ikke lige ved en PC med en compiler, så check selv for banale fejl
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