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) 而没有 * 或 & 是否正确。
什么是对的?
请帮我。
表达式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)