C stała znakowa, jako wskażnik

0

Witam, mam jedno pewnie proste pytanie. Mając taki kod

 

char a[4] = {'a', 'b', 'c'};
char *b = a;

char *c = "abc";

Dwie pierwsze linijki kodu (z punktu widzenia pamięci) rozumiem. Wskaźnik zawiera adres pierwszego elementu tablicy, więc nie ma problemu, ale jak to rozumieć w drugim przykładzie. Do wskaźnika przypisujemy stałą znakową, czyli tak naprawdę jaki adres? Z definicji wskaźnik zawiera adres danego "elementu". Próbując się dobrać do adresu otrzymuję randomowe komórki pamięci. Czy takie bezpośrednie przypisywanie jest jakimś uproszczeniem, co tak naprawdę zapisujemy w takim wypadku do wskaźnika, jeśli nie adres?

2

W C literał znakowy ma taki sam typ jak tablica znaków, więc wskaźnik wskazuje na początek tej tablicy/adres pierwszego znaku. Przy czym niezalecana modyfikacja tego literału, więc bezpieczniej jest pisać

const char* c = "abc"

1 użytkowników online, w tym zalogowanych: 0, gości: 1