Inhaltsverzeichnis:
Definition - Was bedeutet Indirektionaler Operator?
Ein Indirektionsoperator im Kontext von C # ist ein Operator, der zum Abrufen des Werts einer Variablen verwendet wird, auf die ein Zeiger zeigt. Während ein auf eine Variable zeigender Zeiger einen indirekten Zugriff auf den Wert der in seiner Speicheradresse gespeicherten Variablen bietet, gibt der Indirektionsoperator den Zeiger dereferenziert und den Wert der Variablen an diesem Speicherort zurück. Der Indirektionsoperator ist ein unärer Operator, der durch das Symbol (*) dargestellt wird.
Der Indirektionsoperator kann in einem Zeiger auf einen Zeiger auf eine Ganzzahl, einem eindimensionalen Array von Zeigern auf Ganzzahlen, einem Zeiger auf ein Zeichen und einem Zeiger auf einen unbekannten Typ verwendet werden.
Der Indirektionsoperator ist auch als Dereferenzierungsoperator bekannt.
Techopedia erklärt den Indirection Operator
Das Symbol (*) wird zum Deklarieren von Zeigertypen und zum Indirektisieren von Zeigern verwendet, während der Operator 'address-of' () die Adresse einer Variablen zurückgibt. Daher sind der Indirektionsoperator und der Adressoperator gegensätzlich.
In C # können Zeiger nur in einer unsicheren Region verwendet werden. Dies bedeutet, dass die Sicherheit des Codes in dieser Region nicht durch die Common Language Runtime (CLR) überprüft wird. In der unsicheren Region kann der Indirektionsoperator einen Zeiger lesen und darauf schreiben. Die folgenden C # -Anweisungen veranschaulichen die Verwendung des Indirektionsoperators:
- int a = 1, b; // Linie 1
- int * pInt = & a; // Zeile 2
- b = * pInt; // Zeile 3
Der Indirektionsoperator sollte verwendet werden, um einen gültigen Zeiger mit einer Adresse zu dereferenzieren, die an dem Typ ausgerichtet ist, auf den er verweist, um undefiniertes Verhalten zur Laufzeit zu vermeiden. Es sollte nicht auf einen ungültigen Zeiger oder auf einen Ausdruck angewendet werden, der nicht vom Zeigertyp ist, um Compilerfehler zu vermeiden. Nach dem Umsetzen eines leeren Zeigers auf den rechten Zeigertyp kann der Indirektionsoperator verwendet werden.
Wenn Sie mehrere Zeiger in einer einzigen Anweisung deklarieren, sollte der Indirektionsoperator nur einmal mit dem zugrunde liegenden Typ geschrieben und nicht für jeden Zeigernamen wiederholt werden. Der Indirektionsoperator ist im Gegensatz zu C und C ++ in C # distributiv. Wenn der Indirektionsoperator auf einen Nullzeiger angewendet wird, führt dies zu einem durch die Implementierung definierten Verhalten. Da dieser Operator in einem unsicheren Kontext verwendet wird, sollte das Schlüsselwort unsafe vor der Option / unsafe während der Kompilierung verwendet werden. Diese Definition wurde im Kontext von C # geschrieben.
