Reputation: 43
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;
}
Why is it ptr[i]=*pf
instead of *ptr[i]=*pf
even though ptr is a pointer?
Upvotes: 3
Views: 153
Reputation: 21542
The syntax p[i]
is equivalent to *((p) + (i))
. The dereference is still there, even with the array-subscript syntax.
C Standard, § 6.5.2.1.2:
The definition of the subscript operator [] is that E1[E2] is identical to (*((E1)+(E2))).
You can rewrite the code to say *(ptr + i) = *pf
if you want; there's no difference.
Upvotes: 5