C++ - Ersetzen, int Elemente eines Arrays mit einem anderen
Ich habe gehen durch die Vierte Auflage des C++ Primer, und ich bin auf einen Zeiger übung sofort. Die übung fragt, um ein Programm zu Durchlaufen, ein array und ersetzen Sie die Elemente mit 0. Ich habe diese so weit:
#include <iostream>
using namespace std;
using std::cout;
using std::endl;
int main() {
int arr[5] = {1, 2, 3, 4, 5};
for (int i = 0; i != 5; i++)
arr[i] = 0;
cout << arr[i] << endl;
}
Aber ich erhalte eine Fehlermeldung:
name lookup of 'i' changed for ISO 'for' scoping
Wie ändere ich das element?
Nicht veröffentlichen Sie Ihren code als Bild. Post den code als text hier. Darüber hinaus können Sie Ihre code fehlt Angaben (die Fehler bekommen Sie?) – der code, wie es ist, und sollte funktionieren.
Wie auf der Erde ist ein link zu einem Bild irgendwo anders besser als code, vor allem, wenn SO die Möglichkeit hat, sich zu integrieren-code in posts? Abgesehen davon, ich dachte, das war ein Zeiger übung. Es gibt keine Zeiger hier.
Möchten Sie vielleicht posten die verschiedenen Fehler, die Sie bekommen.
Ich bin mir nicht ganz sicher, wie das format es in der Frage. Aber hier ist es: #include <iostream> using namespace std; using std::cout; using std::endl; int main() { int arr[5] = {1,2,3,4,5}; for (int i = 0; i != 5; ++i) arr[i] = 0; cout << arr[i] << endl; }
Sie Klammern eingefügt, die nicht in der ursprünglichen, der das behebt ein problem, durch Zufall.
Wie auf der Erde ist ein link zu einem Bild irgendwo anders besser als code, vor allem, wenn SO die Möglichkeit hat, sich zu integrieren-code in posts? Abgesehen davon, ich dachte, das war ein Zeiger übung. Es gibt keine Zeiger hier.
Möchten Sie vielleicht posten die verschiedenen Fehler, die Sie bekommen.
Ich bin mir nicht ganz sicher, wie das format es in der Frage. Aber hier ist es: #include <iostream> using namespace std; using std::cout; using std::endl; int main() { int arr[5] = {1,2,3,4,5}; for (int i = 0; i != 5; ++i) arr[i] = 0; cout << arr[i] << endl; }
Sie Klammern eingefügt, die nicht in der ursprünglichen, der das behebt ein problem, durch Zufall.
InformationsquelleAutor Nic | 2012-11-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
deine Schleife sollte so gehen:
Ich auch empfehlen, die Sie setzen
return 0;
vor der endgültigen}
.Die geschweiften Klammern sind optional, wenn und nur wenn es eine Ausdrücken, was danach kommt.
I also recommend you put return 0; before the final }.
Warum? Das ist völlig unnötig.Meine Präferenz ist es, immer die geschweiften Klammern-nicht nur, weil es fängt das gelegentliche Fehler, sondern auch, weil der Versionskontrolle. Es gibt keinen guten Grund, warum jemand das ändern der Körper von einer
if
sollte wind-up Herstellung eines delta auf der Linie der Bedingung zu, für trivial ping-pong-hinzufügen und entfernen von Klammern.Auch gemeinsame Schleife Kündigung ist die Verwendung der
<
Betreiber, in:for(unsigned int i = 0; i < 5; ++i)
.InformationsquelleAutor hinafu
Vergessen Sie
{
und}
. Dies bedeutet, dass die Zeile beginnendcout
ist derzeit nicht Teil der Schleife und damiti
ist out of scope.Die Fehlermeldung ist ein wenig irreführend, weil es die Konzentration auf den Punkt, dass diese verwendet, um gültig zu sein, viele, viele, viele Jahre her.
Aber im Gegensatz zu einigen anderen Sprachen block-Bereich ist definiert durch
{
und}
und nicht durch Einrückung. So schreiben Sie:für den großen Erfolg.
Ich denke nicht, dass irgendjemand bestreiten, dass die OP bekam seinen code falsch...
InformationsquelleAutor Lightness Races in Orbit
Gut, sollte es so sein, stattdessen: denken Sie Daran, die 5-Elemente-gehen nur von array-Indizes
0 to 4
!Ändern Sie die
!=
zu<
und fügen Sie die Geschweiften Klammern für diefor
Schleife.!=
war zwar in Ordnung, aber für den style-Gründen würde ich auch empfehlen<
.InformationsquelleAutor Rivasa