Unterschied zwischen Array und Zeiger



  • Ich habe jetzt schon einiges dazu durchgelesen (auch hier im Forum), doch mir ist immer noch nicht 100% klar was der Unterschied zwischen

    int array[][];
    int *array[];
    int **array;
    

    ist. Kann mir das jemand mit einfachen Worten beschreiben?
    Auch was der Unterschied ist zwischen:

    int array[10][];
    int array[][10];
    int *array[10];
    

    Würde mich um eine verständliche Erklärung freuen.



  • Hinter einem Array steckt genug Platz für n Elemente - der Speicher wird automatisch erzeugt und wieder freigegeben.
    Ein Zeiger hat nur eine Adresse auf ein Element - was sich hinter dieser Adresse verbirgt, liegt in deiner Verantwortung.

    Allerdings: Ein Array kann implizit in einen Zeiger umgewandlet werden (der dann auf das Nullte Element zeigt) und mit Zeigerarithmetik kannst du so tun, als ob hinter der Zieladresse eines Pointers ein komplettes Array liegt.



  • int arr1[10][10];
    

    arr1 ist eine Variable, in der du 10 mal 10 Integer-Werte speichern kannst.

    arr1[0][0] = 1;  // Der erste Integer-Wert
    	arr1[0][1] = 2;  // Der zweite Integer-Wert
    	// ...
    	// ...
    	arr1[9][9] = 100; // Der einhundertste Integer-Wert
    

    Und

    int*	arr2[10];
    

    ist ein Array mit 10 Zeigern auf Integer.
    Das

    int**   arr3;
    

    ist ein Zeiger auf einen Zeiger.
    Wenn ich mich nicht irre 😉


Anmelden zum Antworten