0

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

4

2 回答 2

5

A + i与 相同&A[i],或者换句话说,A[i]与 相同*(A + i)第 i个A + i元素的地址也是如此(从零开始计数)。

于 2013-05-09T23:28:27.077 回答
1

不幸的是,这并不能很好地转换为 Java。这是指针算术的一个例子,只有当你明白指针和数组和其他任何东西一样都是数字时才有意义。A + i代表“i超出的内存地址单元A”。(在这种情况下,单位是ints,即 4 个字节。因此您也可以将其写为“超出的内存地址i * 4 字节A”。)

于 2013-05-09T23:30:14.820 回答