#include <iostream>                           // Ein- und Ausgabebibliothek
#include <iomanip>                            // Für die Formatierung (setw)
#include <iterator>                           // Für size
using namespace std;                          // Benutze den Namensraum std

int main() {
    int v[] = {1, 4, 6, 8, 9, 5, 3};          // Definition eines Integer-Arrays mit sieben Einträgen
    int* zeiger_v = v;                        // Definition des Zeigers auf das Integer-Array v
    const size_t dim_v = size(v);             // Dimension des Arrays

    cout << "Array v (Adresse des ersten Elements): " << v << "\n";
    cout << "Dimension des Arrays: " << dim_v << "\n\n";

    cout << left << setw(8)  << "Index"
         << setw(10) << "Wert"
         << setw(18) << "Referenz &v[i]"
         << setw(18) << "Zeiger v+i"
         << setw(15) << "*(v+i)" << "\n";

    cout << string(70, '-') << "\n";

    for (size_t i = 0; i < dim_v; ++i) {
        cout << left << setw(8)  << i
             << setw(10) << v[i]
             << setw(18) << &v[i]
             << setw(18) << (zeiger_v + i)
             << setw(15) << *(zeiger_v + i) << "\n";
    }

    cout << "\nVergleich fuer i=3:\n";
    cout << "v[3]         = " << v[3] << "\n";
    cout << "*(v+3)       = " << *(v + 3) << "\n";
    cout << "*(&v[0]+3)   = " << *(&v[0] + 3) << "\n";

    return 0;
}
