有人可以解释一下下面的 C 代码是做什么的吗?特别是第一行和迭代行?
int * p = &my_numbers[0];
int i;
int j = 0;
for (i = 0; i < 6; i++)
{
j += *(p + (i));
}
编译器(GCC)是否知道当我增加迭代器时,我的意思是 sizeof(int) / 4 字节而不是 1 字节?每个编译器都一样吗?最初我使用的是:
j += *(p + (i * sizeof(int)));
但这给出了错误的答案,但是:
j += *(p + (i));
确实给出了正确答案。
如果我只想增加一个字节,我必须写什么?(不知道我为什么要这样做,我想也许该语言的强类型特性允许我使用 char 来告诉编译器?)。