int-Array an Funktion übergeben
-
Hey ich habe folgende Funktion:
void Funktion(int Position[2]) { cout << Position[0] << "\t" << Position[1] << "\n"; }und ich möchte sie eigentlich so aufrufen:
Funktion({100, 200});Ich bekomme aber vom Compiler folgenden Fehler:
24 main.cpp expected primary-expression before '{' tokenIch möchte nicht unbedingt vorher ein 2d-Array initialisieren und das übergeben.
Danke, MfG
DerCoder
-
DerCoder schrieb:
24 main.cpp expected primary-expression before '{' tokenIch möchte nicht unbedingt vorher ein 2d-Array initialisieren und das übergeben.
Das musst du aber wohl oder übel.
-
Hm okay das ist blöd... Danke
-
Wo ist denn da ein 2d - Array?
Wenn Du wirklich nur ein Array mit zwei int - Werten an Deine Funktion übergeben willst, aber beim Aufrufer gar kein Array hast, warum übergibst Du dann nicht zwei einzelne int - Werte?
-
So wie du das geschrieben hast hat das ja kein sinn
funktion(100, 200);Das ist ja mehr arbeit

funktion({100, 200});viel einfacher geht es doch so
int array[20]; array[1]=100; array[2]=200; Funktion(array[1], array[2]); void Funktion(int P1, int P2) { cout << P1 << "\t" << P2 << "\n"; }
-
Conflict schrieb:
... Funktion(array[1], array[2]); ...und das kompiliert?
btw.:
Er möchte vorher eben kein Array initialisieren und das übergeben, deshalb reduziert sich das ganze auf:void Funktion(int P1, int P2) { cout << P1 << "\t" << P2 << "\n"; } int main() { ... Funktion(100, 200); ... }
-
Belli schrieb:
Conflict schrieb:
... Funktion(array[1], array[2]); ...und das kompiliert?
Warum sollte es das nicht? Welche Bedenken hast du diesbezüglich denn?
-
void func( int *_parrayA, size_t _arrayA, int * _parrayB, size_t _arrayB ) { _parrayA[ 1234 ] = TRUE; } int main() { int arrayA[50]; int arrayB[50]; func( arrayA, 50, arrayB, 50 ); return FALSE; }Kleinere Beispiele zur Verdeutlichung und um zu zeigen was alles so geht:
inet arrayB[50]... arrayB = pointer zur arraybase arrayB[0] = ganznormal int (so wie int i zB) &array[0] = pointer zur arraybase *arrayB = dass selbe wie array[0] *arrayB +( sizeof( INT )*5 ) = dass selbe wie array[5]
-
&array[0]undefiniert

-
*arrayB +( sizeof( INT )*5 ) = dass selbe wie array[5]
ne
-
Kindergartenniveau.

-
_-- schrieb:
&array[0]undefiniert

perfekt definiert. aber sowas von.
-
Bei einer Position würde ich einfach ein
structnehmen.struct Position { int x; int y; Position(int x_, int y_) : x(x_), y(y_) { } }; // Im Programm dann Func(Position(1, 1));
-
inter2k3 schrieb:
Belli schrieb:
Conflict schrieb:
... Funktion(array[1], array[2]); ...und das kompiliert?
Warum sollte es das nicht? Welche Bedenken hast du diesbezüglich denn?
In dem Kontext, wie es codiert ist, sieht es aus wie eine Funktionsdeklaration.
-
Für eine Funktionsdeklaration fehlen aber die Typen. Somit kann es keine Funktionsdeklaration sein. Es handelt sich um einen Funktionsaufruf. Zunächst wird das Array befüllt und anschließend werden die Elemente an Index 1 und 2 übergeben.
Das Vorgehen ist allerdings sinnlos, da man sich das Füllen des Arrays hätte sparen können, aber es schien ja auch nicht ernst gemeint zu sein. Der Autor wollte wohl nur darauf hinweisen, dass der Weg über ein Array unnötig umständlich ist.