Это в точности эквивалентно
*(a + 2) = 'b';
Приведение не требуется.
Все, что он делает, это добавляет два к массиву, который распадается к указателю a
,разыменуйте результирующий указатель и присвойте этой ячейке памяти символ 'b'
.
Когда указатель a
является указателем, код a[x]
в точности эквивалентен *(a + x)
.Так что в вашем случае *(a + 2) = 'b'
точно так же, как a[2] = 'b'
.