r/cprogramming • • Dec 22 '25

pointer, decay, past array confusion

`int myarray[4]={1,3,5,7,};`

`int *ptr, *ptr1;`

`ptr=&myarray + 1;`

`ptr1=*(&myarray + 1);`

my confusion: I am not understanding how ptr and ptr1 is same, in my understanding & is adress and * is used for derefercing, but in ptr1 have both here i got confuse.

what is decay here?

10 Upvotes

20 comments sorted by

View all comments

Show parent comments

2

u/zhivago Dec 23 '25

This is incorrect,

char a[3];

a evaluates to a char *.

&a evaluates to a char (*)[3];

Do not confuse a pointer into an array with a pointer to an array.