使用 scanf() 时的指针数组

2 c arrays pointers scanf pointer-arithmetic

在我的代码中,我使用了这样的指针数组。

arr = (int*)malloc(N * sizeof(int));

        for (i = 0; i < N; i++)
            scanf("%d", (arr + i));
Run Code Online (Sandbox Code Playgroud)

因为指针算术指向地址。

但我想知道只写 (arr+i) 而没有 * 或 & 是否正确。

什么是对的?

请帮我。

Vla*_*cow 6

表达式arr + i具有类型int *并且等价于表达式&arr[i](或者甚至是表达式&i[arr]:))。

所以你可以写

scanf( "%d", &arr[i] );
Run Code Online (Sandbox Code Playgroud)

或者

scanf( "%d", arr + i );
Run Code Online (Sandbox Code Playgroud)