https://onlinegdb.com/zZAhcdpVO

疑问写在里面,老师请帮忙看看

Comments  

# Moderator 2021-12-21 15:01
如果会用ide的调试功能,可以看看每个元素的地址,其他变量的地址,看看有没有重叠。
+1 # Moderator 2021-12-21 14:57
很好的实验。

// 疑问:
// 1.*(p+i)和p代表的意思是否相同,i代表偏移量?

C语言用*(p+i)来实现p,对于地址而言是偏移量,对于数组而言是下标。

// 2.可以看出例如i=-15时两者输出数据不同,但为什么之后判断==又是相等?

我没有看到不相等。如果在读取*(p+i)和p之间没有其他操作,或有副作用的操作,两者值应该一样。越界的内存很可能是一个别的变量所在,比如i,如果那个变量改变了,这样读取的值也就改变了。

C语言不保证下标越界的后果。
# Bollis 2021-12-21 12:24
更正一下,i=-11时不同,且每次结果都不一样

You have no rights to post comments