在c ++中处理int数组

时间:2013-05-09 23:27:04

标签: c++ arrays scanf

我正在查看一些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。我很可能能够理解发生了什么。

2 个答案:

答案 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 字节 ”。)