RE: kopirovaní řetězcu v c

From: <jvot_konference (zavinac) msgroup.cz>
Date: 13. 01. 2006, 13:59 CET
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