2010-12-08 6 views
0

Dies ist möglicherweise eine neue Frage, wie ich gerade Programmierung lernen bin. Ich lerne über QuickSort-Algos und versuche, ein int-Array als Parameter an meine Funktion quickSort() zu übergeben. Wenn ich versuche, in VC++ 2010 zu kompilieren, erhalte ich einen Compilerfehler.Compiler Fehler beim Übergeben eines Arrays als ein Param in VC++ 2010

Ich habe nachgeschaut, wie Arrays als Parameter übergeben werden, und versuchte zu spiegeln, was sie getan haben, aber es schien nicht zu funktionieren. hier: Here ist, wo ich nachgeschlagen habe, es ist der letzte Abschnitt auf der Seite (scrollen Sie den ganzen Weg nach unten). Ich habe versucht, das Array wie in diesem Artikel beschrieben übergeben, aber ich bekomme immer noch einen Kompilierungsfehler. Siehe Code-Klappentext (unvollständig) unten zum Beispiel sowohl was ich mache, als auch den Kompilierfehler. Irgendwelche Vorschläge?

int aTest[7] = {7, 5, 9, 3, 4, 8, 6}; 
int left = 0; 
int right = 6; 
quickSort(aTest, left, right); //this is line 16 referenced in the compiler error 
void quickSort(int aTest[], int left, int right) 

//main.cpp(16): error C2664: 'quickSort' : cannot convert parameter 1 from 'int [7]' to 'int' 
//   There is no context in which this conversion is possible 
+0

Nehmen Sie keine Referenz von einer Website mit der Anweisung # Konstanten zu definieren. – Puppy

+0

Ich wusste nicht einmal, dass es das empfohlen hat. Ich wusste jedoch besser als das zu tun :) – TheEmpireNeverEnded

Antwort

2

Soweit ich verstehe, ist dies C, nicht C++. Wenn ich richtig verstehe, solltest du den Prototyp vor die "Zeile 16" stellen.
Mit dem Prototyp meine ich die Linie void quickSort(int aTest[], int left, int right).

+0

Als ich es änderte, so dass die quickSort() Definition über main() war, schien das zu beheben. Was war falsch mit meiner Vorwärtsdeklaration, warum wurde nur ein int erwartet? – TheEmpireNeverEnded

+1

@Empire: Möglicherweise verwenden Sie einen C++ - Compiler, aber Sie programmieren in C. – aschepler

+0

Ich bin? Ich war mir nicht bewusst, dass ich C wusste. Kannst du mir sagen, wo ich falsch gelaufen bin, damit ich das von C nach C++ ändern kann? Alles, was ich studiert habe, all die Informationen, die ich bekommen habe, stammte von C++ - Tutorials, also bin ich mir nicht sicher, wo ich falsch gelaufen bin. – TheEmpireNeverEnded

1

Wie Anatolyg angibt, ist es die Prototyp-Reihenfolge. Der Compiler nimmt an, dass Quicksort einen einzelnen int-Parameter verwendet. Versuchen Sie, die höchste Warnstufe einzustellen, und Sie sollten eine Warnung sehen, dass Quicksort nicht definiert ist.