EDIT: adrian17 w zasadzie wszystko wyjaśnił, mi pozostaje dopisać tylko "mniej formalna odpowiedź". ;)
Łańcuch znaków w C/C++ to tablica zmiennych typu char, a tablice w tych językach to ciągłe obszary pamięci, do których dostęp realizuje się za pomocą wskaźników.
Częściej można spotkać zapis char napis[] = "blabla", jednak wersja ze wskaźnikiem, ( (!) o ile tylko jest to stały wskaźnik, const char *), jest równoważna*.
Jakieś pytania? :)
*- nie jest równoważna, patrz komentarz niżej