Czesc wam, mam pytanie odnośnie tablic znakowych i wskaźników const char*.
Wszystkie te formy zainicjalizowania ich są dopuszczalne:
//Wskaźniki:const char* wsk = "abc";char* wsk = { "abc" };
Czesc wam, mam pytanie odnośnie tablic znakowych i wskaźników const char*.
Wszystkie te formy zainicjalizowania ich są dopuszczalne:
//Wskaźniki:const char* wsk = "abc";char* wsk = { "abc" };
Różnią się tylko sposobem inicjalizowania, składnią i tym, że sizeof na tablicy zwróci jej rozmiar a na wskaźniku zwróci rozmiar wskaźnika.
OK, rzeczywiście sizeofem i składnią (bo czasem są klamry { } ). Ale sposobem - jak ? Aby jeszcze bardziej uściślić pytanie:
const char tabl[] = "abc";const char tabl[] = { "abc" }; [/code]
czym różnią się tylko te dwa zapisy. Czy użycie nawiasów coś zmienia :?:
Może źle się wyraziłem, chodziło mi właśnie o { }.
Ich użycie nic nie zmienia.
A ja jeszcze mam takie pytania właśnie odnośnie tych nawiasów klamrowych bo mam zadanie z tym związane na jutro do szkoły (poziom zadań coraz bardziej mnie przeraża… ^.^).
const char tabl[] = "abc";
Jest wyjątkiem ponieważ zawsze przy inicjalizacji tablic trzeba używać nawiasów klamrowych, tak :?: 2)
const char* wsk = { "abc" };
Możliwe jest zrobienie czegoś takiego, ponieważ przy inicjalizacji każdego obiektu można posłużyć się nawiasami klamrowymi. Jeśli to nie jest tablica, to liczba inicjalizatorów musi wynieść 1:
int zmienna = { 4 };
int* wsk = { &zmienna };
double pi = { 3.14, 3.1415 }; //<--- Błąd ! Za dużo inicjalizatorów !
Można to tak wytłumaczyć :?:
1)Tak
2)Tak, ale raczej takiej inicjalizacji dla zmienny nietablicowych się nie stosuje.
Stosuje się:
struct Punkt { double x,y; };Punkt A={0,0},B={3,4}; [/code]
Racja, mój błąd. Zapomniałem o typach nieatomowych.