Pytanie jak w tytule. Jaka jest różnica między
CHAR nowy ="test"
a
CHAR* nowy="test"
Mam jeszcze pytanie dotyczące:
CHAR nowy = 'test'
kontra
CHAR nowy ="test" // chodzi o cudzysłowy ...
Pytanie jak w tytule. Jaka jest różnica między
CHAR nowy ="test"
a
CHAR* nowy="test"
Mam jeszcze pytanie dotyczące:
CHAR nowy = 'test'
kontra
CHAR nowy ="test" // chodzi o cudzysłowy ...
char
reprezentuje jeden znak, nie możesz do niego przypisać kilku czy też wskaźnika.
Literały zawarte w apostrofach oznaczają właśnie znaki (jeden znak; dlatego też 'test'
jest niepoprawne), podczas gdy te w cudzysłowach - ciągi znaków.
Różnica jest taka, że pierwsze to UB i próba wypisania tego jako "%s"
spowoduje błąd wykonania: http://ideone.com/kMUeWA, a drugie to wskaźnik na stałą tekstową.
CHAR nowy ="test"
jest błędem, ponieważ zmienna char może przechowywać tylko jeden znak.
CHAR* nowy="test"
do zmiennej *nowy zapisujesz adres do pierwszej litery słowa "test".
w cudzysłowach ' ' zapisujesz pojedynczy znak, a w " " łańcuch znaków.
btw tu masz opisane łańcuchy znaków w C: https://pl.wikibooks.org/wiki/C/Napisy
Już wszystko jasne. Na filmie który kiedyś pobrałem (C dla początkujących) autor namieszał w kodzie.
Ewentualnie o ile CHAR nowy ="test"
jest błędem, to CHAR nowy[] ="test"
już jest poprawny, bo tworzysz tablicę znaków.
Skąd koledzy wiedza co jest typedefem/definem CHAR ? ;-)
No to jaka jest różnica miedzy CHAR a char ???
Typ CHAR
domyślnie nie istnieje w C, char
za to - tak.
Po prostu wielkość liter na znaczenie - my założyliśmy od początku, że chodzi Ci o char
.
Mi się zdaje, że kolega @gavallon miał po prostu na mysli char. Przyznam sie, że sam nie zwrocilem uwagi na wielkosc liter.
Mój błąd. Chciałem poprawić czytelność CHAR i napisałem z dużych literek. W przyszłości będę "mazał" inaczej by w błąd nie wprowadzać, ot by ** char **
no i faktycznie np. CodeBlocks uznaje CHAR za zwykłe znaki a nie instrukcje. Od razu wywala błąd.
Dobrze jednak że o tym mówimy tu i teraz to przynajmniej będzie dobra nauczka na przyszłość.