Prototypendeklaration und Arrays?
-
Hallo Welt

Ich habe eine Frage und zwar zu einem Programm aus einem Programmierbuch. Dank der Kommentare solltet ihr eigentlich den Sinn daran erkennen...
Meine Frage bezieht sich auf einen bestimmten Teil und zwar den mit den Funktionen. Ich blicke absolut nicht durch, wo es in den Funktionsnamen "Null" oder "0"(Der Buchstabe) heissen sollte??
Meine zweite Frage betrifft die erste Codezeile mit dem Zähler:
Nach meinem Wissenstand ist diese Zeile unnötig, aber was meint ihr(jedenfalls lässt sich das Prog auch ohne diese Zeile kompilieren)??
Meine dritte Frage:
Würde es auch reichen, wenn ich in den Prototypendeklarationen nur schreiben würde:int sumArray(int, int); void displayArray(int, int);Das Programm:
// ArrayDemo - die Verwendung von Arrays demonstrieren, // indem ein Sequenz von Ganzzahlen eingelesen // und dann der Reihe nach angezeigt wird #include <cstdio> #include <cstdlib> #include <iostream> using namespace std; // Prototypen deklarieren int sumArray(int integerArray[], int sizeOfloatArray); void displayArray(int integerArray[], int sizeOfloatArray); int main(int nNumberofArgs, char* pszArgs[]) { // den Schleifenzähler eingeben int nAccumulator = 0; cout << "Dieses Programm summiert die Werte, " << "die der Benutzer eingegeben hat\n"; cout << "Beenden Sie die Schleife, indem Sie" << " eine negative Zahl eingeben\n"; int inputValues[128]; int numberOfValues; for(numberOfValues = 0; numberOfValues < 128; numberOfValues++) { // eine weitere Zahl einlesen int integerValue; cout << "Geben Sie die naechste Zahl ein: "; cin >> integerValue; // wenn sie negativ ist... if (integerValue < 0) { // ...dann Schleife abbrechen break; } // ... sonst die Zahl in dem Array speichern inputValues[numberOfValues] = integerValue; } // jetzt die Werte und ihre Summe ausgeben displayArray(inputValues, numberOfValues); cout << "Die Summe ist " << sumArray(inputValues, numberOfValues) << endl; // Warten, bis der Benutzer bereit ist, // das Programm zu beenden, damit er die // Ergebnisse des Programms studieren kann. system("PAUSE"); return 0; } // displayArray - die Elemente eines Arrays // der Länge sizeOfloatArray anzeigen void displayArray(int integerArray[], int sizeOfArray) { cout << "Der Wert des Arrays ist:" << endl; for (int i = 0; i < sizeOfArray; i++) { cout.width(3); cout << i << ": " << integerArray[i] << endl; } cout << endl; } // sumArray - die Summe der Elemente eines // Integer-Arrays zurückgeben int sumArray(int integerArray[], int sizeOfArray) { int accumulator = 0; for (int i = 0; i < sizeOfArray; i++) { accumulator += integerArray[i]; } return accumulator; }
-
Hallo
Ich blicke absolut nicht durch, wo es in den Funktionsnamen "Null" oder "0"(Der Buchstabe) heissen sollte??

Meinst du sowas ?sizeOfloatArray
Das soll auch keine 0, sondern ein O sein. Denn das ist englisch und sind eigentlich 3 Worte "Size of array". Das float ist sicher von dir aus Unwissenheit reingeschoben wurden, denn in deinem ganzen Programm gibt es kein float-Array, nur Integer-Arrays.
Meine zweite Frage betrifft die erste Codezeile mit dem Zähler:
Nach meinem Wissenstand ist diese Zeile unnötig, aber was meint ihr(jedenfalls lässt sich das Prog auch ohne diese Zeile kompilieren)??Meinst du das hier?
int numberOfValues;
Grundsätzlicxh ist das nötig, um die Variable zu deklarieren. Löscht du diese zeile einfach, kommt ein Kompilerfehler.
Normalerweise würde man den Zähler erst in der For-Schleife dekalrieren, aber in diesem Fall will man den Endwert der Schleife auch noch nach der Schleife auswerten, also muß man dafür sorgen das die Variable auch noch nach der Schleife gültig ist.Würde es auch reichen, wenn ich in den Prototypendeklarationen nur schreiben würde:
Ja, das reicht dem Compiler. Allerdings sind aussagekräftige Variablennamen immer vorzuziehen.
bis bald
akari
-
[quote="akari"]
Das soll auch keine 0, sondern ein O sein. Denn das ist englisch und sind eigentlich 3 Worte "Size of array"
Also auch bei den Variablennamen, oder?
Diesen Abschnitt habe ich so aus der Buch CD übernommen und mich darum auch so gewundert, was das sizeOfloatArray heissen soll:
int sumArray(int integerArray[], int sizeOfloatArray); void displayArray(int integerArray[], int sizeOfloatArray)Meinst du das hier?
Zitat:int numberOfValues;Ich meine diesen Zähler hier:
// den Schleifenzähler eingeben int nAccumulator = 0;Ja, das reicht dem Compiler. Allerdings sind aussagekräftige Variablennamen immer vorzuziehen.
Danke für den Hinweis
-
Hallo
int sumArray(int integerArray[], int sizeOfloatArray);
Doch ist doch klar. mit "integerArray" wird ein Array übergeben. Mit "sizeofArray" wird die Größe des Arrays übergeben, also wie viele Elemente es konkret hat. Ich würde es auch kürzer schreiben
int sumArray(int array[], int size);Das ist vollkommen aussagekräftig genug.
Ich meine diesen Zähler hier: ...
/Edit : okay, habe die falsche Zeile angeschaut. Das nAccumulator ist in der Tat überflüssig.
bis bald
akari
-
Danke für die Hilfe....
/EDIT:
dasint sizeOfloatArrayist als definitiv ein Fehler des Autors?
-
Hallo
Das würde nur Sinn machen wenn es ein Array mit float-Elementen gäbe. Gibt es aber nicht, also macht es keinen Sinn und irgendjemand hat das float da reingedrückt weil er mit dem "of" nichts anfangen konnte.
bis bald
akari