Jaka jest różnica między CHAR a CHAR*?

0

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

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.

4

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ą.

3

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

0

Już wszystko jasne. Na filmie który kiedyś pobrałem (C dla początkujących) autor namieszał w kodzie.

1

Ewentualnie o ile CHAR nowy ="test" jest błędem, to CHAR nowy[] ="test" już jest poprawny, bo tworzysz tablicę znaków.

0

Skąd koledzy wiedza co jest typedefem/definem CHAR ? ;-)

0

No to jaka jest różnica miedzy CHAR a char ???

0

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 .

0

Mi się zdaje, że kolega @gavallon miał po prostu na mysli char. Przyznam sie, że sam nie zwrocilem uwagi na wielkosc liter.

0

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

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