```
func main() {
b := 23
var s *int
s=&b
fmt.Println("init:",*s)
fmt.Println("init adder:",s)
for i :=0;i<10;i++{
s=&i
//fmt.Println("i:",i)
fmt.Printf("%d-%v\n",i,&i)
fmt.Println("for-s:",*s)
}
fmt.Println("s:",*s)
fmt.Println("s adder:",s)
}```
![image.png](https://static.studygolang.com/220324/d76b0c45284148cb3db0a9f7b78d430a.png)
为什么最后等于10了。。!!求大佬解惑
更多评论
大概懂你的意思了,是因为for 循环退出条件,是先i++后才退出,
而i内存地址值已经改变已经是10了。在for循环体内还是9,但是循环结束后,由于s 是i地址,而i地址值已经是10了。所以最后也是10了吗。是这样理解的吗
#2
for循环是执行i++,然后判断条件<10.
i++为10的时候,for循环就跳出了,所以for里面不执行。但是for出来之后i的值是10了。
#3