Olen juuri aloitellut testailemaan c++ kieltä, ja yritän oppia eri muuttujien
käytöstä. Kun luon char-tyyppisen muuttujan seuraavasti:
const char* testi; testi = "palapalalapapaaala";
Voiko tuohon muuttujaan "testi" nyt änkeä niin paljon merkkejä kun itse haluan, vai voiko tila loppua kesken?
Oleellista on ymmärtää, että merkkejä ei tuossa kopioida testi-muuttujaan, vaan merkkijono sijaitsee jo ohjelman alkaessa vakio-alueella ja muuttujaan kopioidaan ainoastaan merkkijonon sijainnin ilmaiseva muistiosoite. Merkkijonovakioiden ylärajasta en tiedä, mutta kääntäjä kyllä huomauttanee, jos se ylittyy.
Tärkeintä on kuopata heti alkuunsa ajatus, että char*
(tai peräti const char*
) olisi "muuttuja, jossa on monta char
ia", ja selvittää kärsivällisesti, miten homma oikeasti toimii. C++-kielessä hakemaasi tarkoitukseen käytetään std::string
-merkkijono-oliota. char
-tyyppinen muuttuja (ilman tähteä) puolestaan kuvaa yhtä merkkiä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.