Null problemo dazu denn:
int **_16bit_variable;
*_16bit_variable liefert - und das ist nativer C-Code - schließlich und endlich auch eine Adresse, weil hier ein Zeiger auf einen Zeiger auf einen Integerspeicherplatz (2 Byte Datentyp) definiert worden ist mit int **_16bit_variable; ZeigeraufZeigervariablename.
Entscheidend bei so einer Überladerei ist das Holzhackenprogrammieren außen vor zu lassen. * liefert immer einen Wert, Zeiger auf Zeiger liefern halt eine Adresse logischerweise, insofern legitimerweise.
Und & ist ebenso einzusetzen, abseits der törichten Verwendung als etwas anderes als als Adressenlieferantoperator. Zweimal als, schon schön das Leben

Davor sogar bereits gar einmal. Tja, in klaren Worten: & liefert eine Adresse, wer sich skalare Werte liefern lässt durch das Überladen handelt damit fahrlässig. Das heißt man sollte tunlichst auf die mathematische Funktionalität von C/C++ nicht verzichten um Tricks umzusetzen.
Solche Ratschläge finden sich auch in Büchern zu C++ um derartige Brachial- nicht Anfänger- Fehler nicht zu begehen.
* bedeutet 'Wert von'
& bedeutet 'Adresse von'
mfg
Kikakater