Why does this C pointer's deferenced value become its memory address -


wondering why when function below runs, *p , p printed out having same value. understanding when *p++ runs, causes address of p increment one, why cause *p become memory address.

i tried running code without *(just p++) , output still same, significance of * in demo code lecture.

the output i'm getting is:

1606416248 1606416248

int main() {     int *p;      int = 4;     p = &a;     *p++;     printf("%d %u\n", *p, p); } 

first of all, %u improper format specifier printing address. should use %p printing address, , cast argument (void *) . alone sufficient invoke undefined behavior.

then coming to

but why cause *p become memory address.

undefined behavior.

when *p++;, you're running out of bound, p points single variable, not array. so, next dereference of pointer *p, invalid memory access, causing ub. output, thereafter cannot justified in way.


Comments

Popular posts from this blog

amazon web services - S3 Pre-signed POST validate file type? -

c# - Check Keyboard Input Winforms -