| latajacaryba Temat założony przez niniejszego użytkownika | tablice char VS wskazniki char » 2016-10-30 02:47:08 Witam. Chcialbym dowiedziec sie, co jest lepsze, tablica char czy wskaznik char. Prosze o argumenty za i przeciw do obu. Chodzi mi o sytuacje kiedy np. Przesylamy jakis string jako argumeny do funkcji itp. | 
|  | 
| pekfos | » 2016-10-30 03:01:43 Z pytania można wywnioskować tyle, że sam nie wiesz, kiedy używasz wskaźnika. Tablica wydaje się być jeszcze oczywista, ale kto tam wie.. | 
|  | 
| Gibas11 | » 2016-10-30 09:32:46 Oba są kiepskie bo zawsze przekazujesz oryginał ciągu a nie kopię, moźe by tak std::string? Ale jak już musisz, to funkcje z reguły przyjmują wskaźniki a co im dasz nie robi różnicy bo tablica jest wskaźnikiem z ładnym opakowaniem. Więc wszystko zależy od tego co robiłeś z tym wcześniej i które było akurat wygodniejsze. | 
|  | 
| latajacaryba Temat założony przez niniejszego użytkownika | » 2016-10-30 12:25:47 Pekfos, chodzi mi o to, że czytam książke do nauki c++ i w niej autor, kiedy przekazuje jakiegoś stringa do funkcji, to używa zywkle: void funk( const char * wsk )  a nie  void funk( char tab[] ) przy czym nie bardzo rozumiem dlaczego, skoro tablice można modyfikować, a wskaźnik jest const... | 
|  | 
| pekfos | » 2016-10-30 13:47:53 Te zapisy różnią się tylko słowem const, w obu przypadkach przekazujesz wskaźnik. A czy ma być wskaźnikiem na stałą, czy nie, to już zależy od konkretnej funkcji. | 
|  | 
| latajacaryba Temat założony przez niniejszego użytkownika | » 2016-10-30 15:08:02 Ok, ale co jest wygodniejsze... albo co Ty używasz (zwykle)? | 
|  | 
| Monika90 | » 2016-10-30 15:19:23 Takie deklaracje funkcji są równoważne: void f( const char * ptr );  ==  void f( const char ptr[] ); i te też: void f( char * ptr );  ==  void f( char ptr[] ); A te nie są: void f( const char * ptr );  !=  void f( char ptr[] ); Do funkcji  void f( char ptr[] );  nie da się przekazać literału "xyz", nawet jeśli kompilator którego używasz na to pozwala, to nie jest to standardowe zachowanie. Raczej używa się tych z gwiazdką, bo te z [] wprowadzają zamieszanie. | 
|  | 
| latajacaryba Temat założony przez niniejszego użytkownika | » 2016-10-30 20:24:00 Rozumiem... Zapytam o jeszcze jedno, pewnie czytałem o tym, ale już zapomniałem, kiedy mamy wskaźniki: char a[] { "xyz" };char wskchar = a;
 int b = 5;
 int * wskint = & b;
 
dlaczego akurat wskaźnik char nie zachowuje się tak, jak inne, tzn. cout<<wskint - adres obiektu na ktory wskazuje cout<<wskchar - zawartosc tablicy. Dlaczego tak jest? | 
|  | 
| « 1 »  2 |