考虑以下代码
char love[4]={'l','o','v','e'};
如果不同,爱情[1]和*(爱情+ 1)的机器代码是相同还是不同?
答案 0 :(得分:4)
如果您要求引用相同的内存位置,答案是肯定的。 *(1+love)
和1[love]
也是如此。
如果你问的是编译器是否会生成相同的机器语言,那完全取决于编译器。 ISO C标准没有规定这种详细程度。
它通常更关注效果而不是实现细节。
鉴于所有四种可能性意味着相同的事情,如果编译器生成不同的机器代码,我会感到惊讶 - 我希望体面的编译器生成最有效的版本所有情况。但是,如上所述,这绝不是强制性的。