Calocybe: C++ Pointer

Beitrag lesen

Hi again!

Na, ich hatte ja gehofft, es meldet sich noch jemand, der es weiss, aber da das wohl nicht der Fall ist, muss ich eben mal meine humble Vermutung kund tun.

Wenn man eine Variablendeklaration
  int a;
in der Weise "Ein int kommt raus, wenn ich a hinschreibe" liest, dann uebersetzt sich
  int * a;
als "Ein int kommt raus, wenn ich *a hinschreibe, also a dereferenziere", und dann muss a ein Pointer auf int sein. Dann ergibt sich leicht
  int *a, *b;
als Deklaration zweier int-Pointer ("int kommt raus, wenn ich *a oder *b hinschreibe"). Diese etwas schraege Leseweise hat den Vorteil, auch die Syntax fuer Funktionspointer halbwegs nachvollziehbar zu machen:
  void (*pfv)(int);
"void kommt raus, wenn ich pfv dreferenziere und das dann mit einem int-Parameter aufrufe"
pfv ist also ein Funktionspointer auf eine Funktion, die einen int nimmt und nichts zurueckliefert. (Klammern um *pfv sind notwendig, weil die () dahinter Vorrang vorm * haben.)

Allerdings ergibt sich dann die Frage, warum bei einem Typecast z.B.
  int * a = (int *) malloc(irgendwas);
(int *) quasi als ein Typsymbol behandelt wird.

Ansonsten wuerde ich darauf tippen, dass es sich einfach so eingebuergert hat und jetzt
in den C/C++-Specs drin steht.

Naja, K&R werden sich schon irgendwas dabei gedacht haben, auch wenn man manchmal behauptet, ihre Sprache sei urspruenglich ein Aprilscherz gewesen.

So long