• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Na czym polegają wskaźniki ?

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
334 wizyt
pytanie zadane 1 sierpnia 2016 w C i C++ przez mat1911 Nowicjusz (230 p.)

Witam. Proszę o wyjaśnienie co robi czerwona gwiazdka w poniższym przykładzie:

char* funkcja(char *slowo, char *slowo2)

{

}

1
komentarz 1 sierpnia 2016 przez Patrycjerz Mędrzec (192,440 p.)
Takie pytania będą w przyszłości usuwane - forum nie zastępuje kursów programowania!

4 odpowiedzi

0 głosów
odpowiedź 1 sierpnia 2016 przez MichuDev Pasjonat (20,340 p.)
wybrane 1 sierpnia 2016 przez mat1911
 
Najlepsza
Zapis gwiazdki w programowaniu w C/C++ oznacza 2 rzeczy:

1. Mnożenie.

2. Wskaźniki.

W twoim przypadku są to wskaźniki. Wskaźniki w tych językach pełnią 2 role:

1. Tradycyjnych wskaźników odwołujących się na pewien adres. Czyli miejsca w pamięci (zmiennej) trzymającej adres w pamięci i rozmiarze sizeof(size_t).

2. Tablic (przechowują adres tablicy, bez jej rozmiaru).

W twoim przypadku jest to tablica nazwana "łańcuchem znakowym języka C". Łańcuch znakowy języka C ma typ char* lub const char*, oraz kończy się znakiem '\0' czyli zerem binarnym. Bez niego podczas wypisywania łańcucha możemy wypisać inne dane, kod lub spowodować wyjątek związany z brakiem zaalokowanej pamięci.

W przypadku wpisywanych w kodzie źródłowym napisów jest używany typ const char*. Jest to również lepsza wersja od char*, ale trzeba pamiętać, że nie można w niej nic zapisywać. Istnieje automatyczna konwersja z char* na const char*.
komentarz 1 sierpnia 2016 przez mat1911 Nowicjusz (230 p.)
Dziękuję.
komentarz 2 sierpnia 2016 przez MichuDev Pasjonat (20,340 p.)
Zapomniałem dodać, że '\0' dopisuje za nas kompilator :)
+1 głos
odpowiedź 1 sierpnia 2016 przez Avernis Nałogowiec (27,400 p.)

Zwraca jakby id zmiennej, Każda zmienne musi gdzieś być w pamięci ram, a gwiazdka, czyli wskaźnik pokaże ci gdzie jest. Za pomocą wskaźników możesz np. mieć 1 zmienną, i wskaźnik. Jak napiszesz tak:

int zmienna = 0;
int *wskaznik = &zmienna;

*wskaznik = 10; 

 

to zmienna też będzie miała też 10. Są jak by mentalnie połączone.

Wskaźniki też definiują tablice, a std::string to tablica char'ów więc możesz przez to też zwrócić std::string; wtedy piszesz tak:

std::string x;
x.c_str() = funkcja("super char", "zarabisty char");

 

0 głosów
odpowiedź 1 sierpnia 2016 przez Wi_ktos Bywalec (2,950 p.)
Ta część całej deklaracji funkcji informuję Cię co funkcja zwraca w tym wypadku jest to wskaźnik do obiektu typu char (czyli po prostu oznacza to, że funkcja zwróci C-string) .
komentarz 1 sierpnia 2016 przez jegor377 Stary wyjadacz (13,230 p.)
char to typ prosty, a nie obiekt. :)
komentarz 1 sierpnia 2016 przez mat1911 Nowicjusz (230 p.)
Dziękuję za odpowiedź.
komentarz 1 sierpnia 2016 przez adrian17 Ekspert (330,920 p.)

(liczba typu int to też obiekt - po prostu nie obiekt w sensie OOP)

komentarz 2 sierpnia 2016 przez jegor377 Stary wyjadacz (13,230 p.)
a no w takim razie ok. :)
0 głosów
odpowiedź 1 sierpnia 2016 przez jegor377 Stary wyjadacz (13,230 p.)
Zwraca komórkę lub komórki w pamięci typu char. Np. String. Ogólnie to polecam, by ktoś tu podkleił post z często zadawanymi pytaniami, by mat mógł zgłębić ten temat.
1
komentarz 1 sierpnia 2016 przez mat1911 Nowicjusz (230 p.)
Dziękuję za odpowiedź.

Podobne pytania

0 głosów
2 odpowiedzi 132 wizyt
pytanie zadane 12 kwietnia 2022 w C i C++ przez xTMx3 Obywatel (1,570 p.)
0 głosów
1 odpowiedź 254 wizyt
pytanie zadane 26 października 2020 w C i C++ przez komboboost0 Użytkownik (570 p.)
0 głosów
0 odpowiedzi 195 wizyt

90,818 zapytań

139,493 odpowiedzi

313,553 komentarzy

60,311 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...