Global und Lokal
-
#include "main.h" #include <iostream> using namespace std; int arr[] = { 5 }; void main() { int arr[1]; cout << arr[1]; }Es hat gar keinen Sinn, ein globales Objekt gleich zu nennen wie ein lokales, oder?
In der main() könnte das globale Objekt gar nicht angesprochen werden, wenn ein gleichnamiges, lokales Objekt existiert, oder?
-
es macht tatsächlich keinen sinn, 2 variablen gleich zu nennen.
-
Doch kann es und zwar mit dem ::-Operator
#include <iostream> using namespace std; int arr[] = {5}; int main() { int arr[] = {3}; cout << arr[0]; // gibt 3 aus cout << ::arr[0]; // gibt 5 aus }Der Rückgabewert von main ist übrigens int. Siehe dazu
-
Mit vorangestelltem Scope-Operator greift man auf den globalen Namensraum zu:
#include <iostream> int arr[] = { 5, 3 }; int main() { int arr[1] = { 2 }; std::cout << arr[0] << ::arr[1]; }
-
Oh stimmt, ich hatte den Bereichsoperator vergessen.
Wenn man keinen Bereich angibt, spricht man den globalen Bereich an, stimmt das so?
/*Globaler Bereich*/ ::Objekt
-
nein, falls vorhanden spricht man den lokalen an, sieh beispiel oben
-
ceplusplus schrieb:
Wenn man keinen Bereich angibt, spricht man den globalen Bereich an, stimmt das so?
Ja, das ist richtig.