寒山寺小生 发表于 2019-8-23 10:00 你理解力有些差啊 |
| 指针在赋值完成后,已经指向数组后面(超出数组域)的内存空间了,有可能刚好系统将这个内存分配为变量 i了 |
| 你这个指针在给数组赋完值后就指到数组后面的位置了,和数组没有直接关系了,你循环打印的是你根本不知道的内存区域的值。你那个值会累加是因为你指针刚好指向数组后面的内存,这个编译器编译的时候给你优化了,它认为你循环打印是有意义的,所以帮你优化打印出了你循环的次数,如果你换一个没有自动帮你优化代码的编译器,就是一个固定的垃圾数了。或者你再把指针往后挪一下,他就不会帮你和前面联系起来,就不会“自作聪明”地优化了,打印的也就是个固定的垃圾数了。 |
chenyinhu 发表于 2019-8-23 07:39 主要是我指向的地址一样,为什么值会变 |
hantu 发表于 2019-8-22 23:54 主要是我指向的地址一样,为什么值会变 |
| 数组要赋初值吧,然后在for循环里加上一行 |
| 第二个for循环之前,要重新将指针p指向数组首地址才行啊(因为前面接收完数据后p已经指向数组尾了)。 |
| 这十个数没有赋值到数组a里 |
| 清零啊,你运行完一次需要把变量清零啊 |