Lokale/statische Variablen Gültigkeitsbereich in C++
Wenn ich etwas schreiben wie dieses:
#include <iostream>
int main()
{
using namespace std;
{int n;n=5;} cout<<n;
system("pause");
return 0;
}
Der compiler sagt mir, dass n ist schwarzarbeit. Dann habe ich versucht, so dass es statisch ist, aber wieder, der compiler sagt mir, dass es schwarzarbeit. Nicht eine variable declated statische Programm-Bereich? Wenn nicht, wie kann ich bei der Verwendung von n in diesem Programm?
- Vielleicht, weil der {int n;n=5;}? Warum müssen Sie die geschweiften Klammern da?
- Sie mischen Sichtbarkeit/Zugänglichkeit und Lebensdauer. (Bitte wählen Sie eine C oder C++ wenn Sie Fragen über diese Art von detail. Kann es sein subtile (oder nicht so subtile) Unterschiede zwischen Ihnen.)
- Ich möchte herausfinden, ob es einen Weg gibt, um bei der Verwendung von n mit den geschweiften Klammern gibt.
- gibt es bezüglich meiner Frage?
- In diesem sehr konkreten Fall mit
n
nicht-statische glaube ich nicht so. Mitn
statische wahrscheinlich nicht in diesem Umfang. Im globalen Gültigkeitsbereich die es dort gibt. Wenn du gehst, um eine Frage stellen über beide Sprachen (was Sie nicht sollte, es sei denn, Ihre Rede-interop oder Unterschiede zwischen Ihnen), zumindest ein code-Beispiel, die "glaubwürdig" in beiden Sprachen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du bist verwirrend Rahmen mit Leben. Statische Variablen haben eine Lebensdauer gleich das Programm, die Lebenszeit, aber Sie Folgen immer noch scoping-Regeln basierend auf wo Sie deklariert sind.
Den Umfang n wird einfach zwischen die Klammern:
also außerhalb des Blocks, Sie haben keine n-variable.
Macht es statisch macht es nur den Wert behalten, auch nachdem Sie den block beenden, so dass die nächste mal, wenn Sie eingeben, dass der block wieder, Sie können es abrufen, die den Wert aus der letzten Zeit, die Sie ausgeführt, dass der block, aber trotzdem ist das Teleskop immer noch innerhalb der eckigen Klammern.
wie verwende ich n in diesem Programm?
system()
.pause
ist auch nicht ein Dienstprogramm, das sich auf allen Plattformen (Win?).Eine variable als static deklariert, im globalen Bereich hat sein Anwendungsbereich beschränkt sich auf die übersetzung Einheit. Eine variable als static deklariert, die innerhalb einer Funktion hat seine Lebensdauer wird das gleiche wie das Programm ist, aber in diesem Fall nicht auf seinen Umfang. Sie haben, um
cout
im gleichen Bereich wien
erklärt wurde, um es zu benutzen.Hier der compiler gibt n Fehler ist schwarzarbeit, weil hier "{int n;n=5;}" es ist erklärtes Ziel der in den geschweiften Klammern. Und Klammern uns sagt, über den Umfang der Variablen. , Wenn überhaupt der Bereich endet, ist die variable aus dem Speicher gelöscht.
Sowie für Statische und lokale.
Statische : Die variable ist der gleiche wie Globale Variablen, aber Ihr Wert bleibt konstant in der gesamten Anwendung. Und die static-variable kann nicht verwendet werden, auf der anderen Seite mit extern.
Lokalen : Die lokalen Variablen werden auf dem stack gespeichert und Sie werden gelöscht, wenn Sie out of scope.
static could be modified so its value remains constant
missverstanden werden könnten, wenn die person kommt aus der java Welt zu C++