#include <iostream>
using namespace std;
int main()
{
char *stacja[]={"miasto","miasto2","miasto3","miasto4","miasto5","miasto6","miasto7"};
char *www[3]; // Czy taki zapis nie jest niebezpieczny ?
int i;
for (i=0;i<7;i++)
{
cout << "stacja: " << stacja[i]<<endl; // czemu pokazuje normalnie nazwe zamiast adresu danego wskaznika ? przeciez zeby pokazac to co kryje sie pod danym adresem wskaznika trzeba bylo uzyc np *stacja[i]
}
www[0]=stacja[2];
www[1]=stacja[5];
www[2]="taki tekst";
cout << "oto 3 elementy tablicy : \n" << www[0]<<", " << www[1] << ", " << www[2]<<endl<<www[3]<<endl;
// chodzi o www[3] pokazalo mi element zerowy stacja[0] przypadek ? a moze dlatego ze uzylem tego zapisu char *www[3]; ??
return 0;
}

- Rejestracja:około 10 lat
- Ostatnio:prawie 3 lata
- Postów:156

- Rejestracja:około 22 lata
- Ostatnio:ponad rok
Przede wszystkim ta tablica powinna być tablicą wskaźników do stałych: const char *stacja[]
. W C++ nie można przypisać literału będącego łańcuchem znaków do typu char *
, musi być const char *
.
char *www[3];
może być potencjalnie niebezpieczny - wartości w tablicy mają nieokreślone wartości. Nie można ich używać, gdybyś to zrobił byłby to undefined behavior.
stacja[i]
jest obecnie typu char *
- to jest typ elemntu tablicy. std::cout
(obiekt klasy std::basic_ostream
) ma dla typu const char *
przciążony operator <<
, który wypisuje c-string. Żeby pokazać jaki jest adres, na który pokazuje wskaźnik char *
z Twojej tablicy, zrób static_cast<const void *>(stacja[i])
- zostanie wykorzystane przeciążenie operatora <<
, służące do wypisywania wartości wskaźników.
www[3]
to undefined behavior i nie można powiedzieć, co się stanie. To co obserwujesz jest z punktu widzenia standardu języka przypadkowe. Tablica ma 3 elementy a odwołujesz się do elementu 4, którego nie ma.

- Rejestracja:około 10 lat
- Ostatnio:5 miesięcy
- Lokalizacja:Hong Kong
zamiast kopac sie z tablicami wskaznikow nie lepiej byloby uzyc np vector<string> ?
przyklad znajdziesz m. in. tu http://www.cplusplus.com/reference/vector/vector/vector/
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.
W C++ nie można przypisać łańcucha znakowego do typu char *, musi być const char *.
Jak dla mnie brakuje tutaj "literału" przed "łańcucha znakowego".satirev