Avatar billede ahara Nybegynder
11. september 2004 - 13:52 Der er 12 kommentarer og
1 løsning

Returnere et array

Hej igen

Jeg har følgende kode:
**********************
char nabo()
{
int arr[2];

arr[1]='a';
arr[2]='b';

return arr;
}

search()
{
???=nabo();
}
**********************

Hvorledes kan jeg fra funktionen search() kalde nabo() funktionen og benytte det array der sendes retur fra nabo i search funktionen?

Mvh
AHR
Avatar billede arne_v Ekspert
11. september 2004 - 14:20 #1
char arr[2];

char *nabo()
{
  arr[1]='a';
  arr[2]='b';
  return arr;
}

char *search()
{
  return nabo();
}

måske
Avatar billede arne_v Ekspert
11. september 2004 - 14:21 #2
vi returnerer char* som er ca. det samme som et char array

nabo returnerer *ikke* adressen på en lokal variabel men adressen
på en global
Avatar billede arne_v Ekspert
11. september 2004 - 14:22 #3
char *nabo(char *arr)
{
  arr[1]='a';
  arr[2]='b';
  return arr;
}

char *search(char *arr)
{
  return nabo(arr);
}

er bedre (thread safe)
Avatar billede ahara Nybegynder
11. september 2004 - 14:39 #4
char nabo()
{
int arr[2];

arr[1]='a';
arr[2]='b';

return *arr;
}

search()
{
???=nabo();
}

*******************************
Kan jeg ikke bruge ovenstående og skifte ??? med et eller andet. Der opstår ingen fejl hvis jeg skriver ovenstående og kalder nabo(), men jeg ved ikke hvor jeg skal ligge returværdier fra nabo hende for at bruge den i search funktionen.

Kan du/i hjælpe
Avatar billede arne_v Ekspert
11. september 2004 - 14:44 #5
char arr[2];

char *nabo()
{
  arr[1]='a';
  arr[2]='b';
  return arr;
}

void search()
{
  char *s = nabo();
  ...
}

eller

char *nabo(char *arr)
{
  arr[1]='a';
  arr[2]='b';
  return arr;
}

void search()
{
  char buf[2];
  char *s = nabo(buf);
  ...
}

din kode vil bringe dig problemer (og jeg er overrasket og at du ikke får compiler
fejl)
Avatar billede bertelbrander Novice
11. september 2004 - 15:22 #6
Bemærk at alle de arr der er brugt er på to elementer, arr[0] og arr[1], I bruger også arr[2], det må man vist ikke.
Avatar billede bertelbrander Novice
11. september 2004 - 15:26 #7
Man kan bruge en vector:

#include <iostream>
#include <vector>

typedef std::vector<char> VectorType;

VectorType SomeFunc()
{
  VectorType Vector(2);
  Vector[0] = 'a';
  Vector[1] = 'b';
  return Vector;
}

int main()
{
  VectorType V = SomeFunc();
  std::cout << V[0] << " " << V[1] << std::endl;
}
Avatar billede arne_v Ekspert
11. september 2004 - 15:30 #8
Jep. Det skal selvfølgelig være 0 og 1.
Avatar billede bertelbrander Novice
11. september 2004 - 15:32 #9
En anden måde med vector:

#include <iostream>
#include <vector>

typedef std::vector<char> VectorType;

VectorType SomeFunc()
{
  VectorType Vector;
  Vector.push_back('A');
  Vector.push_back('B');
  Vector.push_back('C');
  return Vector;
}

int main()
{
  VectorType V = SomeFunc();
  for(VectorType::size_type i = 0; i < V.size(); i++)
      std::cout << V[i] << std::endl;
}
Avatar billede ahara Nybegynder
13. september 2004 - 10:03 #10
Ok. Jeg roder lidt med vector. Tak for jeres svar :o)
Avatar billede arne_v Ekspert
19. september 2004 - 18:54 #11
ahara>

Kommet videre ?
Avatar billede arne_v Ekspert
19. september 2004 - 18:54 #12
Og et svar fra mig
Avatar billede ahara Nybegynder
19. september 2004 - 20:02 #13
Jeg takker. Løste problemet på en anden måde. Men tak for jeres hurtige svar.

Mvh
AHR
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



IT-JOB

Netcompany A/S

Test Consultant

Sentia Denmark A/S

Product Manager

Netcompany A/S

IT Consultant

Aktieselskabet CARL CHRISTENSEN

Vi søger en nysgerrig og skarp Dataanalytiker

KMD A/S

Developer