Was bedeutet & in der C-Sprache?
In der C-Sprache kann & als „bitweiser UND“- oder „Adressnahme“-Operator verwendet werden. Der bitweise UND-Operator ist ebenfalls ein binärer Operator und seine Funktion besteht darin, den beiden Zahlen zu entsprechen An der Operation ist das binäre UND beteiligt, und der Adressoperator ist ein unärer Operator, der das Operationsergebnis auf die Adresse des rechten Operanden setzt.
Der bitweise UND-Operator
dient dazu, die Binärzahlen gemäß den entsprechenden Bits zu UND, um eine neue Binärzahl zu erhalten. 1 und 0 sind 0; 1 und 1 sind 1;
wird wie folgt analysiert:
ist die Summe jedes Bits des Binärsystems.
Zum Beispiel: 1010 0011& 0000 1111, das Ergebnis ist 0000 0011. Das heißt, mit 0 zu gehen ist gleichbedeutend mit dem Löschen dieser Ziffer auf 0, und mit 1 zu gehen ist gleichbedeutend mit dem Beibehalten dieses Bits.
Adressoperator abrufen
für The Der &-Operator ist in der C-Sprache wie folgt definiert: (&p) ist eine Operation, die die Adresse zurückgibt, die bei der Deklaration von p geöffnet wurde. Aufgrund meiner Beobachtung des Codes bin ich jedoch der Meinung, dass der &-Operator nicht nur eine Funktion zur Rückgabe der Adresse ist ;
Zum Beispiel:
int a = 1; //假设a的地址是0x7dfe88 int *p = (int *)0x7dfe88; int num = 1; int *p1 = #
Das Obige ist ein einfacher Code zum Zuweisen von Werten zu den Zeigern p und p1, es ist eine einfache hexadezimale Adresse, die jedoch hinzugefügt werden muss in einen Zeiger konvertiert. Wenn die Konvertierung nicht durchgeführt wird, gibt der Compiler eine Warnung aus (Warnung C4047: „Initialisierung“: „int *“ und „int“ haben unterschiedliche Indirektionsebenen); Der &-Operator zum Abrufen der Adresse kann jedoch ohne erzwungene Konvertierung kompiliert und übergeben werden, was zeigt, dass der &-Operator keineswegs so einfach ist wie das Abrufen einer Adresse. Die Operation des Zuweisungsoperators „=" erfolgt von rechts nach links, was zeigt, dass die rechte Seite von „=" auch ein Zeiger ist. Hier gehen wir also davon aus, dass der &-Operator die Adresse von num herausnimmt und einen temporären Zeiger basierend auf dem Typ von num generiert.
Schreiben Sie basierend auf der Hypothese den folgenden Code zur Überprüfung:
int num = 1; double *p1 = #
Als Ergebnis meldete der Compiler den Fehler „Warnung C4133: „Initialisierung“: Typinkompatibilität von „int *“ zu "doppelt *"" . Es ist also etwas Wahres an meiner Hypothese.
Empfohlenes Tutorial: „C#“
Das obige ist der detaillierte Inhalt vonWas bedeutet & in der C-Sprache?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!