Арифметика указателя на указатель

Может кто-нибудь объяснить вывод следующего кода

char* a[] = {"ABC123", "DEF456", "GHI789"};
char **p = a;
cout<<++*p<<std::endl;
cout<<*p++<<std::endl;
cout<<++*p<<std::endl;

Вывод:

BC123
BC123
EF456

Меня сбивает с толку различное поведение ++ * p и * p ++. Я ожидал, что результат будет:

ABC123
DEF456
GHI789
5
задан Vivek Ranga 20 February 2012 в 10:18
поделиться