c++ - Incrementing pointer prints garbage? -
i wrote following code:
void incrementnumber(int *num) {     *num++;     printf("%i\n", *num); }  int main() {     int = 3;     printf("%i\n", i);      int *ptr = &i;      incrementnumber(&i);     printf("%i\n", i);      getchar();     getchar();      return 0; } whenever output num in increment number, prints garbage, if change code this:
void incrementnumber(int *num) {     *num += 1;     printf("%i\n", *num); } it outputs values expected. i'm trying away using references can better understand pointers because (like most) knowledge of pointers limited , i'm trying grasp them better.
also let me rephrase question, know why outputs garbage value, it's because it's incrementing memory address , printing garbage @ location rather incrementing value contained @ memory address, guess i'm asking why on increment not add to? way 2 commands compile down assembly? there way increment value pointed pointer in way?
that's because of precedence: *num++ evaluated num++ , dereferenced. when print value next, invalid pointer in case.
if use (*num)++, you'll result want.
Comments
Post a Comment