我正在查看一些c ++代码,因为我正在尝试学习它并遇到了一些奇怪的东西,我不知道发生了什么。
int A[100000];
int main()
{
int N;
scanf("%d", &N);
for (int i = 0; i < N; i++)
{
scanf("%d", A + i);
}
我了解除scanf("%d", A + i);
行之外发生的所有事情
这里阵列发生了什么?它只是将从控制台读入的整数添加到数组中吗?我对Java有很好的理解。
因此,如果有人能够将其转换为Java。我很可能能够理解发生了什么。
答案 0 :(得分:5)
A + i
与&A[i]
相同,换句话说,A[i]
与*(A + i)
相同。所以A + i
是i th 元素的地址(从零开始计数)。
答案 1 :(得分:1)
不幸的是,这并不能很好地转化为Java。它是指针算法的一个例子,只有当你理解指针和数组就像任何其他数字一样时才有意义。 A + i
代表“i
以外的内存地址A
”。 (在这种情况下,单位是int
s,这是4个字节。所以你也可以把它写成“i * 4
以外的内存地址A
字节 ”。)