Deutsche Lernausgabe
Zeigerarrays in C
Unterscheiden Sie ein Array aus Adressen von einem Zeiger auf ein Array.

int *p[3] deklariert drei Zeiger auf int; int (*p)[3] deklariert einen Zeiger auf ein Array aus drei Ganzzahlen. Klammern ändern die Gruppierung und damit die Bedeutung der Deklaration.
Jedes Element muss vor der Dereferenzierung eine gültige Adresse enthalten. Objekte können getrennt liegen, müssen aber während der Nutzung existieren. Wandeln Sie zum Ausgeben einer Adresse mit %p das Argument in void * um.
Ein Array aus Zeichenkettenzeigern ist keine rechteckige Zeichenmatrix. Verwenden Sie const char * für Literale und verändern Sie diese nicht. Zeichnen Sie Zeiger und Objekte, um das Modell zu prüfen.
Quellcode
#include <stdio.h>
int main(void)
{
int first = 10;
int second = 20;
int third = 30;
int *items[] = {&first, &second, &third};
size_t count = sizeof items / sizeof items[0];
*items[1] = 25;
for (size_t i = 0; i < count; ++i) {
printf("items[%zu] points to %d\n", i, *items[i]);
}
printf("second is now %d\n", second);
return 0;
}Im Compiler öffnenHäufige Fragen
Warum bleiben Code und manche Ausgaben englisch?
C-Schlüsselwörter, Bezeichner, Programmkommentare und erwartete Ausgaben bleiben wie im Original, damit der Code ausführbar und die Tests konsistent bleiben. Erklärungen und Aufgabenstellungen sind übersetzt.