为什么单个指针就像一个数组,并且不需要解引用运算符 (*) 来访问指向的元素?

Riz*_*eem 3 c arrays pointers function

int *insertZeroPosition(int *pf,int n,int k){
    int *ptr=(int *)calloc(n+1,sizeof(int));
    int i;
    ptr[0]=k;
    for (i=1;i<n+1;i++,pf++){
        ptr[i]=*pf; 
    }
    return ptr;
}
Run Code Online (Sandbox Code Playgroud)

为什么它ptr[i]=*pf而不是*ptr[i]=*pf即使 ptr 是一个指针?

Gov*_*mar 5

语法p[i]等价于*(p + i). 即使使用数组下标语法,取消引用仍然存在。

C 标准,第 6.5.2.1.2 节:

下标运算符[]的定义是E1[E2]等同于(*((E1)+(E2)))。

您可以根据需要重写代码*(ptr + i) = *pf;没有区别。