你定义的变量是全局的,没有在栈里察凳。
顺序是这样的 str[0], str[1], p
然后p的指向是str[0], p+2, 其实指向的就是p, 赋值后 p的值为3。
最后cout的时候 取了地址为3的内存,显然这是非法操作,这个地址是给操作系统留的不允许访问的,固然造成败消旅死机问题。
之所以改成char没问题,是因为字节对齐的问题,关桥野于字节对齐请自己百度学习。 不用谢。
楼主都说了,跟越界没关系。你们还得意的说什么 没有2啊,我觉得真2.
这还不是越界
p[2]=3
改陆雀老为早升
p[1]=3
cout<
改为
cout<
难度咐晌你好难度再见
p取不到2只能取到1。芦缓因为是从0开始的。0开衡哗锋始 + 有两个 = 这两个是0和1
于是没2
p[2]=3; p[2]越界了 ,既然越界了,那就不要考虑结果了,什么结果都是可能的
明明就是越界啊
这还不越界 ? 数组容量为2 , 你存取第3个元素就是越界啊