Почему появляется ошибка invalid conversion from 'char' to 'char*'?
val - массив строк = массив массивов символов
a  - строка = массив символов
b - символ
char b = a[0];
Все правильно - массив a - отдельные символы, а не указатели на символы.
char *val[] - массив указателей на символ - char*
char* - массив символов.