0
Isn't the pattern supposed to be 2 2 3 3 ?
Doubt regarding the inner working of pointers https://code.sololearn.com/cevpej102B21/?ref=app
7 Answers
+ 3
Step-by-step we have:    
      int array[] = {2,3,4,5}; 
      
      int *arptr = array; // address of array[0]
      
      int value= *arptr; // 2
      
      cout<<value<<"\n"; // 2
      
      value= *arptr++;  // 2 (due to post-increment)
      
      cout<<value<<"\n"; // 2
      
      value= *arptr; // 3
      
      cout<<value<<"\n"; // 3
      
      value= *++arptr; // 4 (due to pre-increment)
      
      cout<<value<<"\n"; // 4
+ 3
Yes it does but `after` dereferencing and assigning the current element of the array to `value`, it'd be easy to illustrate it this way
value = *arptr;
++arptr;
+ 2
If you tracking the program flow `before `
value= *++arptr;
you can see that the current address pointed by `arptr` is &array[0] + 1. When `++arptr` gets executed, first, the address gets incremented by 1, then gets dereferenced. So, now the  `arptr == &array[0] + 2` and `*arptr == *(&array[0] + 2) == 4`. Actually, for the sake of simplicity, you could write it in two steps like so
++arptr;
value= *arptr;
+ 2
Haha, glad to help out. 8D
+ 1
*++arptr is nothing but
*(++arptr)
So, before the above operation the pointer gives the address of array[0] , after ++arptr , it should give the address of array[1] , and the value at i.e, *(++arptr) is the value of array[1] , which is 3 not 4.
I am maybe at a fundamental error at some point. Help me explain what is it.
+ 1
Sorry for bothering you again..
Does *arptr++ influence the position of the pointer because that is only kind of updation that comes 'before'
+ 1
Wow! Thanks. You guys at Sololearn are really prompt and to the point. Will surely rate it on Play. You saved my 4 marks from tomorrow's test.



