Ich stelle nur sicher, dass ich dieses Konzept richtig verstehe. Mit dem Operator * erstelle ich eine neue Variable, der ein Platz im Speicher zugewiesen wird. Um Variablen und ihre Werte nicht unnötig zu duplizieren, wird der &-Operator bei der Übergabe von Werten an Methoden und dergleichen verwendet und zeigt tatsächlich auf die ursprüngliche Instanz der Variablen, anstatt neue Kopien zu erstellen … Ist das richtig? Es ist offensichtlich ein oberflächliches Verständnis, aber ich möchte nur sicherstellen, dass ich sie nicht durcheinander bringe. Vielen Dank!
Was ist der Unterschied zwischen den Operatoren * und & in der C-Programmierung?
Wesley
Steve Jessop
Nicht ganz. Du verwechselst a *
Erscheint in einem Typnamen (der zum Definieren einer Variablen verwendet wird), wobei die *
Operator.
int main() {
int i; // i is an int
int *p; // this is a * in a type-name. It means p is a pointer-to-int
p = &i; // use & operator to get a pointer to i, assign that to p.
*p = 3; // use * operator to "dereference" p, meaning 3 is assigned to i.
}
-
Wie wäre es mit diesen:
*i
oder&p
haben sie eine bedeutung?– mfaani
15. März 2021 um 13:01 Uhr
Man benutzt &
um die Adresse einer Variablen zu finden. Also, wenn Sie haben:
int x = 42;
und (zum Beispiel) der Computer gespeichert hat x
am Adressstandort 5
, &x
wäre 5
. Genauso kannst du Laden diese Adresse in einer Variablen namens a Zeiger:
int* pointer_to_x = &x; // pointer_to_x has value 5
Sobald Sie einen Zeiger haben, können Sie Dereferenzierung es mit der *
Operator, um es wieder in den Typ umzuwandeln, auf den es zeigt:
int y = *pointer_to_x; // y is assigned the value found at address "pointer_to_x"
// which is the address of x. x has value 42, so y will be 42.
SteveStifler
Wenn eine Variable mit dem Operator * gepaart wird, enthält diese Variable eine Speicheradresse.
Wenn es mit dem &-Operator gepaart ist, gibt es die Adresse zurück, an der die Variable gespeichert ist.
Wenn du hättest
int x = 5; //5 is located in memory at, for example, 0xbffff804
int *y = &x; //&x is the same thing as 0xbffff804, so y now points to that address
beide x
und *y
ergäbe 5
Sind Sie sicher, dass Sie nicht mit C++ verwechselt werden, das das & als Referenzoperator sowie den Adressoperator verwendet?
– James Morris
23. April 2010 um 21:50 Uhr
Möglicher Duplikat: stackoverflow.com/questions/2667420
– sbi
23. April 2010 um 21:56 Uhr
Als Betreiber
*
und&
sind Umkehrungen, wie++
und--
oder+
und-
oder*
und/
.– aussen
23. April 2010 um 21:59 Uhr
@outis: Außer wenn sie es nicht sind:
A*B
vs.A&B
.– sbi
24. April 2010 um 23:41 Uhr
s/operatoren, /operatoren, unär/
– aussen
24. April 2010 um 23:58 Uhr