this question has answer here:
for example, have
char* c=(char *)malloc(100*sizeof(char)); printf("0x%x,c); printf("0x%x,&c);
and shows different value c
, &c
.
however,if m having following:
char d[100]; printf("0x%x,d); printf("0x%x,&d);
this shows value of d
, &d
same.
how comes first code gives me different result c
, &c
?
an array decays pointer first element in many contexts, including use in function call. doesn't decay when it's operand of unary &
(address-of) operator. means d
, &d
yield same address in example, have different types. char *
, char (*)[100]
, respectively, in case.
in contrast, c
pointer. when take address &
, you're getting address of pointer variable, opposed using c
directly, gives address it's pointing to. c
char *
, , &c
char **
.
editorial note: use %p
print pointer types. %x
unsigned int
, , unsigned int
might different size pointer. corrected code might like:
printf("%p\n", (void *)c);
Comments
Post a Comment