Přesná odpověď, kterou jsem získal od lektora C/C++, takže už je mi to jasné. Joot Toto: char retez1[]="pokus1"; znamena alokuj pole retezec1 na zasobniku a inicializuj ho znakama .... (a ukazatel na 1. znak tedy na to pole dej do retezec1) Je to vlastne zkraceny zapis za char retezec1[7] = {'p','o','k','u','s','1',0}; Kdezto toto: char* retez1="pokus1"; znamena do datoveho segmentu dej konstantni retezec "pokus1" a ukazatel na nej dej ro retezec1. Jednoduse ta konstatnta, mysleno tech 7 bytu toho retezce, je v pameti chranene proti zapisu a o ten se snazi pak strcpy a proto to spane. -----Original Message----- From: jvot_konference@msgroup.cz [mailto:jvot@msgroup.cz] Sent: Thursday, January 12, 2006 12:35 PM To: servis-internet@nawebu.cz Subject: kopirovaní řetězcu v c Zdravím, začínám s programováním v C/C++ a teď jsem si tady hrál s nějakým příkladem a zjistil jsem něco, co mi není tak úplně jasné: tohle projde char retez1[]="pokus1"; char * retez2="pokus2"; strcpy(retez1,retez2); cout<<retez1; tohle ne char * retez1="pokus1"; char * retez2="pokus2"; strcpy(retez1,retez2); cout<<retez1; Já se domníval, že by se mělo jednat o stejný zápis. Pod DevC++ mi to spadne, ani se nedovím proč. Joot -----------------------------------------------------( reklama )----- Digitalni televize je jiz v Praze a Brne. Kdy dorazi k vam? Vse o digitalnim vysilani: pristroje, technologie, zakony, pokryti: Ctete DigiZone.cz (http://www.digizone.cz/) --------------------------------------------------------------------- -- -- Konference: SERVIS ------ Pravidla: http://pravidla.kab.cz/ -- -- Archiv, instrukce pro odhlaseni: http://internet.nawebu.cz/ -- -- Konference Internet Info, s.r.o. ----- http://www.iinfo.cz/ --Received on Fri, 13 Jan 2006 13:59:41 +0100
This archive was generated by hypermail 2.1.8 : 13. 01. 2006, 13:57 CET