В первом случае вы устанавливаете char_pointer для первого элемента array_thing (скорее, его адрес). Использование арифметики с указателями приведет вас к другим элементам, как и индексирование. Например
char_pointer[3] = 'c';
совпадает с
char_pointer + = 3;
char_pointer = 'c';
Второй пример ... Я не верю, что это так, как вы делаете.