Lich555 Temat założony przez niniejszego użytkownika |
const char * jako argument funkcji » 2016-11-15 20:01:00 Witam. 1.Chciałbym się dowiedzieć co funkcja dostaje, kiedy jej argumentem jest const char * napis. Np. void zapamietaj( const char * napis )
Przesyłamy tutaj jakiś ciąg wyrazów. Ale nie możemy napisać, że przesyłamy string ... dlaczego? Przesyłamy wskaźnik do każdego znaku z osobna (czyli char )? Jak prześlemy np. zapamietaj( "napis" ) , to przesyłamy do funkcji każdy znak z osobna? 2.Przy argumentach takich jak powyżej częsty jest warning "iso c++ forbids converting a string constant to ‘char*’". To jest tak, że w C zapis void zapamietaj( char * napis ) był dopuszczalny, a w C++ musi być void zapamietaj( const char * napis ) ? W C string był tablicą charów, a w C++ jest tablicą const char? 3.Przy pisaniu punktu drugiego chyba znalazłem odpowiedź na 1 problem, ale proszę mnie skorygować. Nie przesyłamy string, bo nie da się przesłać całej tablicy do funkcji, tylko przesyłamy adres jej 1-ego elementu? |
|
Gibas11 |
» 2016-11-15 20:09:39 "lel" = { 'l', 'e', 'l', '\0' } 1. Przesyłasz adres pierwszego znaku. 2. W obu był tablicą const char . I taka funkcja powinna brać const char , bo nie wydaje się by miała coś zmieniać. 3. O, jednak sam na to wpadłeś. I zapoznaj się czym różnią się string i cstring, bo trudno zrozumieć o czym akurat piszesz. No i w C++ nie używa się cstringów, staraj się ich unikać. |
|
Lich555 Temat założony przez niniejszego użytkownika |
» 2016-11-15 20:59:59 Używałem funkcji strcpy(). cstring zawiera funkcje do zabawy z char * i używało się tego w C, a teraz jest trochę przestarzałe i używa się string? @Edit Lepiej używać strncpy(), tak? |
|
michal11 |
» 2016-11-17 16:45:11 Lepiej używać std::string . Jeżeli już musisz korzystać z const char* to przeczytaj dokładnie czym jest C-string. |
|
karambaHZP |
» 2016-11-17 19:00:12 Jeśli chcesz możesz skorzystać z std::string i przesłać go do funkcji z argumentem typu const char*, skorzystaj z metody std::string::data(), która zwraca wskaźnik na pierwszy znak stringa. |
|
michal11 |
» 2016-11-17 19:19:01 @up zamiast data polecane jest używanie std::string::c_str() |
|
karambaHZP |
» 2016-11-17 20:44:20 |
|
michal11 |
» 2016-11-17 22:08:44 |
|
« 1 » |