pages/Kapitel06-page-01.svg

pages/Kapitel06-page-02.svg

pages/Kapitel06-page-03.svg

pages/Kapitel06-page-04.svg

pages/Kapitel06-page-05.svg

pages/Kapitel06-page-06.svg

Live-Demo - Globale Variablen

#include <iostream>

using namespace std;

int x = 10;

int main(void) {
    cout << x << endl;
    int x = 5;
    cout << x << endl;

    return 0;
}
compiler

pages/Kapitel06-page-07.svg

pages/Kapitel06-page-08.svg

pages/Kapitel06-page-09.svg

pages/Kapitel06-page-10.svg

Live-Demo - Speicherlayout

#include <iostream>

using namespace std;

int x = 10;         // global initialisiert
int y;              // global uninitialisiert

int main(void) {
    cout << x << endl;
    int x = 5;
    cout << x << endl;

    return 0;
}
gen/memory-layout-data-crop.svg

pages/Kapitel06-page-11.svg

pages/Kapitel06-page-12.svg

pages/Kapitel06-page-13.svg

pages/Kapitel06-page-14.svg

pages/Kapitel06-page-15.svg

pages/Kapitel06-page-16.svg

pages/Kapitel06-page-17.svg

pages/Kapitel06-page-18.svg

pages/Kapitel06-page-19.svg

pages/Kapitel06-page-20.svg

pages/Kapitel06-page-21.svg

pages/Kapitel06-page-22.svg

pages/Kapitel06-page-23.svg

pages/Kapitel06-page-24.svg

pages/Kapitel06-page-25.svg

pages/Kapitel06-page-26.svg

pages/Kapitel06-page-27.svg

pages/Kapitel06-page-28.svg

pages/Kapitel06-page-29.svg

pages/Kapitel06-page-30.svg

pages/Kapitel06-page-31.svg

pages/Kapitel06-page-32.svg

pages/Kapitel06-page-33.svg

pages/Kapitel06-page-34.svg

pages/Kapitel06-page-35.svg

pages/Kapitel06-page-36.svg

pages/Kapitel06-page-37.svg

pages/Kapitel06-page-38.svg

pages/Kapitel06-page-39.svg

pages/Kapitel06-page-40.svg

pages/Kapitel06-page-41.svg

Live-Demo - Seiteneffekte von globalen Variablen

#include <iostream>

using namespace std;

int x = 5;

void tuWas(void) {
    x *= x;
}

int main(void) {
    cout << x << endl;
    tuWas(); 
    tuWas(); 
    cout << x << endl;

    return 0;
}
compiler

pages/Kapitel06-page-42.svg

pages/Kapitel06-page-43.svg

pages/Kapitel06-page-44.svg

pages/Kapitel06-page-45.svg

pages/Kapitel06-page-46.svg

pages/Kapitel06-page-47.svg

pages/Kapitel06-page-48.svg

pages/Kapitel06-page-49.svg

pages/Kapitel06-page-50.svg

pages/Kapitel06-page-51.svg

pages/Kapitel06-page-52.svg

pages/Kapitel06-page-53.svg

pages/Kapitel06-page-54.svg

pages/Kapitel06-page-55.svg

pages/Kapitel06-page-56.svg

pages/Kapitel06-page-57.svg

pages/Kapitel06-page-58.svg

pages/Kapitel06-page-59.svg

pages/Kapitel06-page-60.svg

Live-Demo - Variablenüberdeckung

#include <iostream>

using namespace std;

int main(void) {
    for (int i = 0; i < 3; i++) {
        for (int i = 0; i < 3; i++) {
            cout << i << " ";
        }
        cout << endl;
    }

	return 0;
}
compiler

pages/Kapitel06-page-61.svg

pages/Kapitel06-page-62.svg

pages/Kapitel06-page-63.svg

pages/Kapitel06-page-64.svg

pages/Kapitel06-page-65.svg

pages/Kapitel06-page-66.svg

pages/Kapitel06-page-67.svg

pages/Kapitel06-page-68.svg

pages/Kapitel06-page-69.svg

pages/Kapitel06-page-70.svg

pages/Kapitel06-page-71.svg

pages/Kapitel06-page-72.svg

pages/Kapitel06-page-73.svg

pages/Kapitel06-page-74.svg

pages/Kapitel06-page-75.svg

pages/Kapitel06-page-76.svg

Live-Demo - Statische lokale Variablen

#include <iostream>

using namespace std;

int count() {
    static int c{0};  // Wird nur beim ersten Mal aufgerufen
    int i = 3;
    i++;
    cout << "i = " << i << endl;
    return ++c;       // Statische Variable c wird mit jedem Aufruf erhöht.
}

int main() {
    for (int i{0}; i < 10; ++i) {
        int cnt = count();
        cout << "count() = " << cnt << endl;
    }
	return 0;
}
compiler

pages/Kapitel06-page-77.svg

pages/Kapitel06-page-78.svg

pages/Kapitel06-page-79.svg

pages/Kapitel06-page-80.svg

pages/Kapitel06-page-81.svg

pages/Kapitel06-page-82.svg

pages/Kapitel06-page-83.svg

pages/Kapitel06-page-84.svg

pages/Kapitel06-page-85.svg

pages/Kapitel06-page-86.svg

pages/Kapitel06-page-87.svg

pages/Kapitel06-page-88.svg

pages/Kapitel06-page-89.svg

pages/Kapitel06-page-90.svg

Live-Demo - Namensräume

#include <iostream>

using namespace std;

void print(int const n, double a[]) {
    for (int i = 0; i < n; i++) {
        cout << a[i];
        if (i != n - 1) cout << ",";
    }
    cout << endl;
}

void print(int n, double a[]) {
    while (--n >= 0) {
        cout << a[n] << " ";
    }
    cout << endl;
}

int main(void) {
    int constexpr n = 3;
    double a[n] = {1.1, 2.2, 3.3};

    print(n, a);

	return 0;
}
compiler

pages/Kapitel06-page-91.svg

pages/Kapitel06-page-92.svg

pages/Kapitel06-page-93.svg

pages/Kapitel06-page-94.svg

pages/Kapitel06-page-95.svg

pages/Kapitel06-page-96.svg

pages/Kapitel06-page-97.svg

pages/Kapitel06-page-98.svg

pages/Kapitel06-page-99.svg

pages/Kapitel06-page-100.svg

pages/Kapitel06-page-101.svg