/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Array referance i metode
Fra : Dennis Taszarek Holm


Dato : 12-11-03 12:57

Hey igen

Hvordan er det muligt at overføre et array pr. referance til en funktion...

Min funktion ser ud som følgende:

void readSunSetFile(int &riseSet[3][365])
{
//kode
}

men når jeg prøver at overføre et array får jeg at vide at jeg ikke må
overføre referancer til arrays.



 
 
Ivan Johansen (12-11-2003)
Kommentar
Fra : Ivan Johansen


Dato : 12-11-03 19:48

Dennis Taszarek Holm wrote:
> void readSunSetFile(int &riseSet[3][365])
> {
> //kode
> }
>
> men når jeg prøver at overføre et array får jeg at vide at jeg ikke må
> overføre referancer til arrays.

Som du har fundet ud af tager din funktion et array af referencer. En
reference til et array har en noget sjovere syntaks:
void readSunSetFile(int (&riseSet)[3][365])
{
}

Jeg kan dog ikke se nogen grund til at overføre et array som reference.
Den eneste forskel jeg kan se i forhold til at overføre som pointer,
hvilket ellers vil ske, er et strengere typetjek.

Ivan Johansen


Byrial Jensen (12-11-2003)
Kommentar
Fra : Byrial Jensen


Dato : 12-11-03 20:16

Dennis Taszarek Holm wrote:
> Hey igen
>
> Hvordan er det muligt at overføre et array pr. referance til en funktion...

Det kan man ikke, og det er ikke nødvendigt da et array overføres til en
funktion som en pointer.

I nedenstående program overføres der en pointer til et array af 7 int
til funktionerne. Man kunne godt have anført en størrelse for den første
dimension i funktionserklæringerne, men den bruges alligevel ikke -
hverken til kodegenerering eller typetjek, så jeg vil ikke anbefale det.

#include <iostream>

void set_values (int ar[][7])
{
for (int i = 0 ; i < 3 ; ++i)
for (int j = 0 ; j < 7 ; ++j)
ar[i][j] = (i+1)*1000 + (j+1);
}

void print_values (int ar[][7])
{
for (int i = 0 ; i < 3 ; ++i)
{
for (int j = 0 ; j < 7 ; ++j)
std::cout << ar[i][j] << ' ';
std::cout << std::endl;
}
}

int main ()
{
int ar[3][7];
set_values (ar);
print_values (ar);
}


Mogens Hansen (12-11-2003)
Kommentar
Fra : Mogens Hansen


Dato : 12-11-03 20:41


"Dennis Taszarek Holm" <dennis@contempt.dk> wrote in message
news:bot76e$6i2$1@sunsite.dk...

> Hvordan er det muligt at overføre et array pr. referance til en
funktion...

Et bud kunne være at bruge en typedef:

<C++ kode>
typedef int array_type[3][365];

void foo(array_type& bar)
{
for(unsigned i = 0; sizeof(bar)/sizeof(bar[0]) != i; ++i)
for(unsigned j = 0; sizeof(bar[0])/sizeof(bar[0][0]) != j; ++j)
bar[i][j] = i*j;
}

int main()
{
array_type at;
foo(at);
}
<C++ kode/>

Et andet alternativ er at lave det som en datastruktur.

Venlig hilsen

Mogens Hansen



Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409079
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste