首页 > 其他 > 详细

goland 记"*"与"&"的使用

时间:2020-06-06 18:26:53      阅读:43      评论:0      收藏:0      [点我收藏+]

首先引用一段Go语音中文网的代码:

package main

import "fmt"

func main() {
	var a int = 1  // int类型的值
	var b *int = &a  // *int类型的指针,理解指向一个类型为int的值的地址的指针类型
	var c **int = &b  // 指向*int的**int类型的指针
	var x int = *b  // int类型的值
	fmt.Println("a = ",a)
	fmt.Println("&a = ",&a) // 取a变量的内存地址
	fmt.Println("*&a = ",*&a) // 对a变量的内存地址取值
	fmt.Println("b = ",b)  // *int类型的指针,a变量的内存地址
	fmt.Println("&b = ",&b) // **int类型的指针,指向*int(a变量的内存地址)
	fmt.Println("*&b = ",*&b) // 对**int取值,值为*int(a变量的内存地址)
	fmt.Println("*b = ",*b) // 对*int取值,值为int(a的值)
	fmt.Println("c = ",c)  // **int类型的指针,指向*int(a变量的内存地址)
	fmt.Println("*c = ",*c) // 对**int取值,值为*int(a变量的内存地址)
	fmt.Println("&c = ",&c) // 取**int的内存地址
	fmt.Println("*&c = ",*&c) // 对**int的内存地址取值
	fmt.Println("**c = ",**c) // 对**int指向的内存地址的指针指向的值(a变量的内存地址)取值
	fmt.Println("***&*&*&*&c = ",***&*&*&*&*&c)
	fmt.Println("x = ",x) // 对*int指针指向的地址取值
}

//a =  1
//&a =  0xc42001a0d0
//*&a =  1
//b =  0xc42001a0d0
//&b =  0xc42000c028
//*&b =  0xc42001a0d0
//*b =  1
//c =  0xc42000c028
//*c =  0xc42001a0d0
//&c =  0xc42000c030
//*&c =  0xc42000c028
//**c =  1
//***&*&*&*&c =  1
//x =  1

  

指针变量前加"*"是对指针指向的地址取值,变量前加"&"是返回值的地址。

  

goland 记"*"与"&"的使用

原文:https://www.cnblogs.com/sxzwj/p/8882673.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!