Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

Pointer

ninette111 / 1 Antworten / Flachansicht Nickles

Welche Ausgaben macht das folgende Programm??
Diese Pointer verwirren mich gerade sehr!  Am Einfachsten wäre natürlich kompilieren, nur blöderweise läuft es nicht.

Ich wär euch für Hilfe dankbar!!

LG
Ines


#include <stdio.h>


char *c[] = {"ENTER", "NEW", "POINT", "FIRST"};
char **cp[] = {c+3, c+2, c+1, c};
char ***cpp[]=cp;


int main (void)
{


printf("%s",** ++cpp); 
printf("%s",*--* ++cpp+3);  
printf("%s",*cpp[-2]+3);  
printf("%s\n",cpp[-1][-1]+1);  
 return 0;
}

bei Antwort benachrichtigen
Dreamforger ninette111 „Pointer“
Optionen

Wo hast du denn den Unfug her? :-)
Einzige Änderung die nötig ist um das zu übersetzen:
char ***cpp = cp; // ohne die []

Ergebniss:
POINTERSTEW

Im Speicher steht ENTER, NEW, POINT, FIRST
cp referenziert FIRST,POINT,NEW,ENTER
cpp steht auf FIRST

1. cpp erhöhen auf POINT, ausgeben : POINT
2. cpp erhöhen auf NEW, referenz von NEW auf ENTER reduzieren, ausgabe ab dem 3. Zeichen von ENTER: ER
3. über cpp auf cp zugreifen, ausgabe ab dem 3. Zeichen von FIRST : ST
4. über cpp auf cp auf c zugreifen, ausgabe ab dem 1. Zeichen von NEW: EW

bei Antwort benachrichtigen