我正在学习编程,我尝试使用'&'来获取内存地址。但是我很想知道'&i'的含义是什么,而'i'来自i:=&b,b是一个整数。
b := 7
i := &b
fmt.Println(&b) //print => 0xc000088000
fmt.Println(i) //print => 0xc000088000
fmt.Println(&i) //print => 0xc00000e018
在这种情况下,“&i”是什么意思?
答案 0 :(得分:4)
&
是address operator,对其求值将得出一个内存地址,该地址在传递给fmt
包时,通常以十六进制格式打印(“ base 16表示法” ,前导0x“)。
一个内存地址就是:一个内存地址。不管是int
变量还是string
的地址,还是指针类型的变量。在打印时,它们看起来都一样。
地址运算符:
对于类型为
x
的操作数T
,地址操作&x
生成类型为*T
到x
的指针。
因此,地址运算符为您提供了一个指针值,当您取消引用时,该指针值将返回原始值。
&b
将是类型b
的变量*int
的地址,当您取消引用时,该地址:*b
将为您提供{{1 }}。
b
将是类型&i
的变量i
的地址,当您取消引用时:**int
将为您提供*i
的值这是i
的地址。因此,如果您还取消引用:b
,那也将为您提供**(&i)
的值。
答案 1 :(得分:1)
此处&b
返回地址b
,并且相同的地址存储在i
中。由于i
也是变量&i
将返回变量i的地址。
答案 2 :(得分:1)
因此from scipy import optimize
L1 = 0.1;
res1 = optimize.fmin_cg(cost, x0=theta, fprime=cost, args = (X_train,y_train,L1))
print ('res1 = '), res1
运算符生成一个指向其操作数的指针。因此,&
基本上会生成指向&i
的指针,该指针已经是指向i
的指针,而该指针不过是一个存储器地址。因此,当您执行b
时,它会打印fmt.Println(&i)
的内存地址。