Program definicji zmiennej


(Siwy17 87) #1

Witam,

Mam prośbę jest ktoś w stanie wytłumaczyć mi od a do z ten program(każdą linijkę po kolei).

char napis[80] = "Ala ma kota";

char napis[] = "Ala ma kota";

char *napis = "Ala ma kota";

(Johny) #2

char napis[80]="Ala ma kota" - program tworzy tablicę 81 elementów pierwszy to napis[0] pozostałe elementy zapełniając wartością zerową

char napis[]="Ala ma kota"Tworzy tablicę tablicę 11 elementową (9 znaków+dwie spacje=11)+'/0' - kod końca stringu=12 bajtów

char *napis = "Ala ma kota" - tworzy wskażnik do stringu - może byc błąd z pamięcią,wskażnik pokazuje miejsce w pamięci gdzie zaczyna się string


(somekind) #3

Dlaczego 81?


(Johny) #4

bo liczysz od zera już element napis a[0] przechowuje jeden znak,ten tekst jest przechowywany tak 'A','l','a' ,' ' ,'m','a',' ', 'k','o','t','a','0',reszta będzie wypełniona domyślną wartością,weż jakąś książkę z C,albo znajdż kurs w necie i poczytaj o tablicach,najlepiej tak uczyć się programowania


(Sawyer47) #5

Pierwsze to 80-elementowa tablica, druga jest 12-elementowa (kompilator sam sobie obliczy wymagany rozmiar), trzecia zmienna to wskaźnik na ten literał, ten wskaźnik powinien być zadeklarowany jako wskaźnik do stałej.


(somekind) #6

Po raz pierwszy w życiu zadławiłem się ze śmiechu powietrzem :smiley:

Ale ok, obiecuję Ci, że specjalnie dla Ciebie wezmę książkę i pouczę się o tablicach w C :smiley:


(Johny) #7

Nawet jeśli to rozumiesz z Pascala to w C są kruczki :slight_smile: - musi to być książka z językiem C,np. gdy masz do czynienia z gwiazdką,musisz kontrolować czy nie wyjeżdzasz poza przydzieloną pamięć,do tablic możesz odwoływać się przez wskażniki,język C jest szybki bo nie wszystko sprawdza


(Zulowski) #8

nie wprowadzac chlopaka w błąd

char tab[80] tworzy tablice 80 elementow indeksowanych 0-79, proba zapisania do tab[80]= 'a'; zakonczy sie bledem.


(somekind) #9

No i wszystko zepsułeś.

Mi tam się pomysły Johny'ego podobały :smiley: