Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Array übergabe an funktion

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
23.03.2010, 17:51 Uhr
~gast123
Gast


Hallo
ich möchte an an eine funktion ein array übergeben,jedoch klappt es nicht, obwohl ich mir eigentlich sicher bin das ich alles richtig mache:
hier die funktion:

C++:

double support(MatrixType &A,VectorType &v,int traeger[],int i) {

int summe=0;

for (int j=0;j<=sizeof(traeger)/sizeof(traeger);j++) {
   summe=summe+v[traeger[j]]*A[i][traeger[j]];
                    }
return summe;
                } // support



benutze es nun in der main methode

C++:
support(A,v,{ i-1,i,i+1,i-1+n,i+n },i);



Fehlermeldung beim compilieren:
matrixtest.cc:76: error: expected primary-expression before ‘{’ token


Vielen Dank

Gast


Bearbeitung:
cpp-Tags gesetzt

Dieser Post wurde am 23.03.2010 um 22:52 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.03.2010, 22:29 Uhr
~toxic
Gast


mach aus dem

C++:
double support(MatrixType &A,VectorType &v,int traeger[],int i)

ein

C++:
double support(MatrixType &A,VectorType &v,int* traeger,int i)

Dieser Post wurde am 23.03.2010 um 22:54 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.03.2010, 23:36 Uhr
0xdeadbeef
Gott
(Operator)


Man kann problemlos Arrays unspezifizierter Länge in der Parameterliste mitgeben, allerdings liefert der sizeof-Operator dann natürlich nicht die Größe des eigentlichen Arrays.

Was den Compilerfehler hier auslöst, ist der Aufruf

C++:
support(A,v,{ i-1,i,i+1,i-1+n,i+n },i);


weil sich Arrays nicht so als Literal angeben lassen. Es ist in C99 möglich,

C++:
support(A, v, (int[]){i - 1, i, i + 1, i - 1 + n, i + n }, i);


zu schreiben - die Fehlermeldung sieht mir nach gcc aus; der beherrscht C99, wenn du ihm die Compileroption -std=c99 mitgibst. Allerdings wird der sizeof-Operator in der Funktion immer noch nicht das machen, was du willst (gib einen size_t mit, der die Länge des Arrays beinhaltet).

Nachtrag: Ich sehe gerade, dass es sich um eine C++-Datei handelt. In dem Fall wirst du das Array nicht in der Form inline angeben können. Ich würde mir auch überlegen, std::vector dafür zu benutzen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 24.03.2010 um 00:03 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: