go语言中指针变量和指针地址
时间: 2024-06-14 18:06:04 浏览: 6
在Go语言中,指针变量和指针地址的概念与其他编程语言类似。指针变量是存储内存地址的变量,而指针地址是指针变量所指向的内存地址。
以下是关于Go语言中指针变量和指针地址的介绍和演示:
1. 声明指针变量和指针地址:
```go
var var_name *var-type
```
其中,`var_name`是指针变量名,`*var-type`是指针类型,`*`号用于指定变量是作为一个指针。
2. 指针变量的使用:
```go
package main
import "fmt"
func main() {
var a int = 10
var ptr *int // 声明指针变量
ptr = &a // 将变量a的地址赋值给指针变量ptr
fmt.Printf("a的值:%d\n", a) // 输出:10
fmt.Printf("a的地址:%d\n", &a) // 输出:变量a的地址
fmt.Printf("ptr的值:%d\n", *ptr) // 输出:指针变量ptr所指向的值
fmt.Printf("ptr的地址:%d\n", &ptr) // 输出:指针变量ptr的地址
}
```
运行结果为:
```
a的值:10
a的地址:变量a的地址
ptr的值:10
ptr的地址:指针变量ptr的地址
```
3. 指针数组和指向指针的指针:
```go
package main
import "fmt"
func main() {
var ptr [3]*int // 声明指针数组
a := [...]int{10, 100, 200} // 实际数组
for i := 0; i < len(a); i++ {
ptr[i] = &a[i] // 地址赋值给指针数组
fmt.Printf("第%d个元素的指针地址:%d\n", i, &a[i])
}
for j := 0; j < len(a); j++ {
fmt.Printf("a[%d] = %d\n", j, *ptr[j]) // 使用指针变量值指向值进行遍历
}
}
```
运行结果为:
```
第0个元素的指针地址:变量a[0]的地址
第1个元素的指针地址:变量a[1]的地址
第2个元素的指针地址:变量a[2]的地址
a[0] = 10
a[1] = 100
a[2] = 200
```