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 |