使用scanf时的指针数组

问题描述

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

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

        for (i = 0; i < N; i++)
            scanf("%d",(arr + i));

因为指针算术点地址。

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

什么是对的?

请帮助我。

解决方法

表达式arr + i的类型为int *,等效于表达式&arr[i](甚至等效于表达式&i[arr]:)。

所以你可以写

scanf( "%d",&arr[i] );

scanf( "%d",arr + i );