Ein Zeiger verweist auf einen Speicherort im Speicher. Tatsächlich haben alle Speicheradressen den gleichen Typ unabhängig vom Variablentyp, soweit ich weiß.Was ist der Unterschied zwischen verschiedenen Arten von Zeigern?
Anstatt einen anderen Zeigertyp zu verwenden (*int
, *string
etc ..), ist dies nur mit einem Typ (var p pointer
) für alle Zeigertypen möglich?
Was ist der Unterschied zwischen den verschiedenen Zeigertypen?
package main
import "fmt"
func main() {
i := 5
s := "abc"
var pi *int // alternatively var pi pointer
var ps *string // alternatively var ps pointer
pi = &i
ps = &s
fmt.Printf("%p %p", pi, ps) // result is 0x1040e0f8 0x1040a120
}
Vielen Dank für die Antwort. Aber diese Erklärung ist wegen meines Mangels an Informationen für mich weit weg. Ein Zeiger ist ein Verweis auf Speicher, der als 32-Bit- oder 64-Bit-Int dargestellt wird. Ist das richtig ?. Wenn diese Informationen korrekt sind, warum verwenden wir unterschiedliche Zeigertypen, die sich auf den Variablentyp beziehen? Wenn diese Information nicht korrekt ist, was ist die Differenz zwischen den verschiedenen Zeigertypen? –
@AliAltun Zunächst einmal ist ein wichtiger Punkt, dass, wenn alle Zeiger gleich wären, Sie Typinformationen verlieren würden und die Sprache viel weniger effizient und weniger sicher machen würden. Sie möchten nicht, dass eine Funktion '* int' akzeptiert, um' * float' zu akzeptieren, oder Sie verlieren einen der wichtigsten Vorteile einer statisch getippten Sprache. –