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 .
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ść.