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

Jaka jest różnica między CHAR a CHAR*?
gavallon
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 238
0

Pytanie jak w tytule. Jaka jest różnica między

Kopiuj
CHAR nowy ="test"

a

Kopiuj
CHAR* nowy="test"

Mam jeszcze pytanie dotyczące:

Kopiuj
CHAR nowy = 'test'

kontra

Kopiuj
CHAR nowy ="test"   // chodzi o cudzysłowy ...
Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
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.

grzesiek51114
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2442
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ą.

bl4ster
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Lublin
  • Postów: 197
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

gavallon
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 238
0

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

bl4ster
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Lublin
  • Postów: 197
1

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

wujnia
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 161
0

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

gavallon
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 238
0

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

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
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 .

bl4ster
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Lublin
  • Postów: 197
0

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

gavallon
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 238
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ść.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.