when and why were memory at ptrChar+1 AND ptrChar+2 initialized?
why does not ptrChar+2 print out 'a'?
why it prints nothing when I want to print ptrChar for the 2nd time?
If any of the operands is a pointer, the following rules apply:
A pointer to non-array object is treated as a pointer to the first element of an array with size 1.
If the pointer P points to the ith element of an array, then the expressions P+n, n+P, and P-n are pointers of the same type that point to the i+nth, i+nth, and i-nth element of the same array, respectively. The result of pointer addition may also be a one-past-the-end pointer (that is, pointer P such that the expression P-1 points to the last element of the array).
when and why were memory at ptrChar+1 AND ptrChar+2 initialized?
Because that these expresions show you something doesn't mean that they were initializated. When I run your code in my machine, lines 8 and 9 shows garbage (different every time I run the program) and line 10 shows the same that line 7.
why does not ptrChar+2 print out 'a'?
Could you explain me why it should be in that way?
why it prints nothing when I want to print ptrChar for the 2nd time?
As I said, in my system both times you call ptrChar it shows the char b.
I think that you are confusing some concepts, and trying to use pointer's arithmetic in a char variable and expecting the same behaviour as if you use it on an array or a char sequence.