例1),声明一个指针变量,打印指针变量地址
package main
import "fmt"
var p *int
var d int
fmt.Println(p)
fmt.Println(d)
执行结果如下:
nil
0
【解释:由于指针变量未指向任何地址,所以打印值为 nil ,nil 相当于 java 中的(null),python中的(None),&p 取出指针变量的地址。上述代码int类型的指针变量和变量,根本区别,指针变量没有默认值,变量有默认值0】
问题?因为指针变量没有赋值,那么声明的指针变量是到底是指针变量自己的地址还是nil的地址呢?看下面 (例2)
例2),声明两个变量。代码如下:
func main() {
num := 1
var p *int
//fmt.Println(p)
//fmt.Println(*p)
p = &num
fmt.Println("num变量的地址为:", &num)
fmt.Println("num变量的地址为:", p)
fmt.Println("指针变量p的地址为:", &p)
fmt.Println("指针变量p的值为:", *p)
}
执行结果如下:
1 num变量的地址为: 0xc00000a0a8
2 num变量的地址为: 0xc00000a0a8
3 指针变量p的地址为: 0xc000006028
4 指针变量p的地址为: 1
解释:
&num 获取变量的地址
p = &num 获取变量的地址 给指针变量,所有 上述代码中的 p =&num
&p 获取指针变量的地址
*p获取地址的值 p 是指针 *获取指针所指向的地址的值
例2注销的代码,如果指针没有所指向的地址,则会运行时异常。
本文深入解析Go语言中指针变量的使用,通过实例演示如何声明指针变量,获取变量地址,以及通过指针访问和修改变量值。文章还探讨了指针变量与普通变量的区别,以及在实际编程中的应用。

382

被折叠的 条评论
为什么被折叠?



