这段代码与指针有什么关系吗?

Does this code have anything to do with pointers?

有人可以帮我处理这段代码吗? 我不知道它的作用。

#include <stdio.h>

int main()
{
    int arr[5],i;
    int a = 1, n = 5;

    for (i=0; i<5;a+= arr[i++]);
    int d = a;
    printf("%d",d);

}

值得注意的是,我们没有在 arr 中放入任何感兴趣的内容,但请注意此行末尾的分号:

for (i=0; i<5;a+= arr[i++]);

这是一种简洁(令人困惑?)的表达方式

for (i=0; i<5; i++)
{
    a += arr[i];
}

所以 a 总结了 arr 中的内容。

从技术上讲,这段代码有指针。这是因为数组是指向存储在其中的值的指针 (arr[0-5])。数组的每个元素都指向内存中任意位置的地址。

int main()
{
    int arr[10];
    unsigned int x;

    for(x = 0; x < 9; x++)
    {
        arr[x] = x;
        printf("%d ", *(arr+x));
    }
    return 0;

}

在此代码中,您可以看到可以使用指针符号在数组中导航。

现在回答你的第二个问题。您在这里给我们的代码首先初始化一个包含 5 个元素的数组,一个名为 'i' 的整数,一个名为 'a' 且值为 1 的整数,以及一个名为 'n' 的整数,它具有值 5.

然后你进入一个重复 5 次的 for 循环。在 for 循环中,你给出数组 [i] 的值。但是因为数组中没有填充数字,所以它会出现内存中任何地方的数字。

接下来你给变量 'd' 赋值 'a'。至少你打印 'd'.

我认为您需要它以便进入循环并打印数组的元素。

int main()
{
    int arr[5], i, a = 1, d;

    for(i = 0; i < 5; i++)
        arr[i] = i;

    for(i = 0; i < 5; i++)
    {
        a = arr[i];
        d = a;
        printf("%d ", d);
    }

    return 1;
}

我想这就是你想要的。