So you have an array in memory:
2, 23, 6, 7, 8...
What this does is pass an array to char*, which allows you to access individual bytes, and it points here:
2, 23, 6, 7, 8...
^
Then it adds four bytes, transferring them to the next value (more on this later).
2, 23, 6, 7, 8...
^
Then he turns it in int*and casts it, getting the value 23.
There are three things in this code.
-, , unsigned 4 . (, + 4). ! + sizeof(unsigned), unsigned.
- int: unsigned, int. unsigned, int ( int .) , int ( INT_MAX), . unsigned*, .
, . %d, %u, . , int* , printf unsigned*, . , 3 .
: . , yuck.