const char * s[2] = { "kot", "pies"};
Czemu literały będące elementami tablicy muszą być stałe? (a nie może być char * s[2] = {"kot, "pies"}
)
0
2
Bo tak definiuje to standard. Chcesz móc je zmieniać - użyj tablicy tablic, nie wskaźników.
0
Bo C++ ma prawo zoptymalizować wszystkie koty w projekcie do jednego kota. Ale to działa tylko jeśli kot jest niezmienny.
2
Dlatego, że używasz C a nie C++.
std::array<std::string, 2> s{ "kot", "pies" };
I problem rozwiązany jak należy.
albo dla C++17:
using namespace std::literals;
std::array s{ "kot"s, "pies"s };
Wersja C
:
char s[2][10] = { "kot", "pies"};