数组和指针配合,不理解运作原理,望大佬指点。

今天学习的时候,看到有这么写的代码

int a = 0;

int* p = &a;

int arr[10] = {};

arr[*p] = 50;

arr[*p + 1] = 60;

这么写之后

为啥arr[1]、arr[2]可以等于50、60?

为啥可以arr[*p]??数组的里面为啥是个指针?

我差了赋值之后之前的地址,也没有改变。

所以不太明白为什么可以 这么做。

请大佬帮助一下。

因为 p指向a
所以*p就是a,也就是0
arr[*p] = 50;
就是
arr[0] = 50;

arr[*p + 1]
就是
arr[1]

我刚开始学的时候也有这个疑惑,int p = &a,现在p就是int型的指针,而不是*p是指针,指针前面加也就是*p就是a,