Zeiger und Pointer in C Mit Pointern (Zeigern auf Speicheraddressen) bietet die Programiersprache-C ein mächtiges Werkzeug um kryptischen Sourcecode zu erzeugen. In der nachfolgenden Tabelle sind einige mögliche und unmögliche Konstrukte aufgeführt. Vielleicht ist diese Tabelle auch hilfreich, wenn man vor der Herausforderung steht, vorhandenen C-Code zu entschlüsseln. |
||
Deklaration | Interpretation | Legale Deklaration |
int i; | Integer Variable. | Ja |
int *p; | Pointer auf eine Interger Variable. | Ja |
int a[]; | Ein Array von Integer Variablen. | Ja |
int f(); | Eine Funktion mit dem Rückgabewert Integer. | Ja |
int **pp; | Pointer auf einen Pointer auf eine Integer Variable. | Ja |
int (*pa)[]; | Pointer auf ein Array von Integer Variablen. | Ja |
int (*pf)(); | Pointer auf eine Funktion mit dem Rückgabewert Integer. | Ja |
int *ap[]; | Ein Array von Pointern auf Integerwerte. | Ja |
int aa[][]; | Ein Array von Arrays mit Integerwerten. | Ja |
int af[](); | Ein Array von Funktionen die Integer als Rückgabewert liefern. | Nein |
int *fp(); | Eine Funktion, die einen Pointer auf einen Integerwert als Rückgabewert liefert. | Ja |
int *fa()[]; | Eine Funktion die ein Array mit Integerwerten liefert. | Nein |
int ff()(); | Eine Funktion mit einer Funktion, als Rückgabewert, mit Rückgabewert Integer. | Nein |
int ***ppp; | Pointer auf einen Pointer auf einen Pointer auf einen Integerwert. | Ja |
int (**ppa)[]; | Pointer auf einen Pointer auf ein Array von Integerwerten. | Ja |
int (**ppf)(); | Pointer auf einen Pointer auf eine Funktion mit Rückgabewert Integer. | Ja |
int *(*pap)[]; | Pointer auf ein Array von Pointern auf Integerwerte. | Ja |
int (*paa)[][]; | Pointer auf Array von Array von Integerwerten. | Ja |
int (*paf)[](); | Pointer auf array von Funktionen mit dem Rückgabewert Integer. | Nein |
int *(*pfp)(); | Pointer auf Funktionen mit Rückgabewert Pointer auf Integer. | Ja |
int (*pfa)()[]; | Pointer auf Funktionen mit dem Rückgabewert eines Array von Integer Werten. | Nein |
int (*pff)()(); | Pointer auf Funktionen mit Funktionen als Rückgabewert, welche den Rückgabewert Integer haben. | Nein |
int **app[]; | Array von Pointern auf Pointern auf Integerwerte. | Ja |
int (*apa[])[]; | Array von Pointern auf Array von Integerwerten. | Ja |
int (*apf[])(); | Ein Array von Pointern auf Funktionen mit dem Rückgabewert Integer. | Ja |
int *aap[][]; | Ein Array von Arrays von Pointern auf Integerwerte. | Ja |
int aaa[][][]; | Array von Arrays von Arrays von Integerwerten. | Ja |
int aaf[][](); | Array von Arrays von Funktionen mit Rückgabewert Integer. | Nein |
int *afp[](); | Array von Funktionen, mit Pointern auf Integerwerten als Rückgabewert. | Nein |
int afa[]()[]; | Array von Funktionen, mit Arrays von Integerwerten als Rückgabewert. | Nein |
int aff[]()(); | Array von Funktionen mit Funktionen als Rückgabewert, welche Integerwerte als Rückgabewert haben. | Nein |
int ***fpp(); | Eine Funktion, mit Pointer auf Pointer auf Pointer auf einen Integerwert, als Rückgabewert. | Ja |
int (*fpa())[]; | Eine Funktion, mit Pointer auf ein Array von Integerwerten, als Rückgabewert. | Ja |
int (*fpf())(); | Eine Funktion, mit dem Pointer auf eine Funktion als Rückgabewert, welche einen Integerwert als Rückgabewert hat. | Ja |
int *fap()[]; | Eine Funktion, mit einem Array von Pointern auf Integerwerte, als Rückgabewert. | Nein |
int faa()[][]; | Eine Funktion, mit einem Array von Arrays von Integerwerten, als Rückgabewert. | Nein |
int faf()[](); | Eine Funktion, mit einem Array von Funktionen, welche Integerwerte als Rückgabewerte haben, als Rückgabewert. | Nein |
int *ffp()(); | Eine Funktion welche eine Funktion, mit einem Pointer auf einen Integerwert als Rückgabewert, als Rückgabewert hat . | Nein |
int *ffa()()[]; | Eine Funktion welche eine Funktion, mit einem Array von Integerwerten als Rückgabewert, als Rückgabewert hat. | Nein |
int fff()()(); | Eine Funktion, mit einer Funktion als Rückgabewert, ,mit einer Funktion als Rückgabewert, welche einen Integerwert als Rückgabewert hat. | Nein |