Pomiędzy tymi zapisami jest spora różnica. To coś pomiędzy apostrofami nazywa się literałem łańcuchowym i może być użyte na dwa sposoby. W tym zapisie: char Napis[] = "abcdef";
literał używany jest do inicjalizacji tablicy znakowej. W tym zapisie char *Napis = "abcdef";
literał jest traktowany jako nienazwana tablica znaków, która może być umieszczona w obszarze tylko do odczytu. Oczywiście jak każda tablica jest on w tym zapisie konwertowany do wskaźnika na pierwszy element, który zapisywany jest w zmiennej Napis
. Z powyższego powodu (i tak jak napisał @Azarien) należy pisać const char *
, modyfikacja tego na co wskazuje ta zmienna jest niebezpieczna.