Matematické Fórum


1. 8. 2026 (L) Fórum bude brzy uzavřeno 😿

Nejste přihlášen(a). Přihlásit

#1 15. 02. 2025 18:40

fmfiain
Příspěvky: 744
Reputace:   -1 
 

Char* vs const char*

Dobrý deň,
chcel by som sa spýtať, prečo:

Code:

const char* text = "text"; //toto funguje
char* text2 = "text2";  //toto hlási chybu

Ďakujem.

Offline

 

#2 15. 02. 2025 20:54

Aleš13
Příspěvky: 383
Reputace:   
 

Re: Char* vs const char*

Jakou chybu? Run-time nebo warning při překladu? (mělo by nastat obojí :-))

Problém je, že druhý příklad vytvoří řetězec "text2\0" uložený "kdesi v datech", jehož adresa je použitá jako počáteční hodnota proměnné text2. Následné problémy jsou asi zřejmé (ale při troše opatrnosti by se s tím dalo vyžít). V prvním případě vznikne konstantní pointer, neměnitelný a všechno je ok.

Offline

 

#3 16. 02. 2025 11:57 — Editoval fmfiain (16. 02. 2025 12:04)

fmfiain
Příspěvky: 744
Reputace:   -1 
 

Re: Char* vs const char*

Dobrý deň ↑ Aleš13:,
ja som to skúšal na VS community 2022 a vyhlásilo mi to chybu.

Konkrétne mi ukázalo, že nemôžem priradiť const char* do char*.

Offline

 

#4 16. 02. 2025 15:34

Aleš13
Příspěvky: 383
Reputace:   
 

Re: Char* vs const char*

Tak s tím už neporadím, VS ani nemám. Zkus stackoverflow, tam určitě bude někdo vědět proč je to právě takhle, takhle detailně to už nevím.

Offline

 

#5 16. 02. 2025 21:27

MichalAld
Moderátor
Příspěvky: 5367
Reputace:   130 
 

Re: Char* vs const char*

fmfiain napsal(a):

Dobrý deň ↑ Aleš13:,
ja som to skúšal na VS community 2022 a vyhlásilo mi to chybu.

Konkrétne mi ukázalo, že nemôžem priradiť const char* do char*.

Ale  možná to půjde s přetypováním, tedy ConstChar = (const char*) Char;


Jinak věci co překladač povolí a co né se mění snad s každou verzí. Takže třeba i spousta linuxových kódů co dříve šly přeložit bez problémů už dnes nejdou a musí se buď nastavit parametry překladače nebo dam doplnit nějaké takovéhle věci.

Offline

 

#6 17. 02. 2025 20:10

fmfiain
Příspěvky: 744
Reputace:   -1 
 

Re: Char* vs const char*

Dobrý deň,
našiel som spôsob ako previesť const char* do char*:

Code:

char* char1 = const_cast <char*>("text");

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson