problem v C - retezec vs ukazatel

Pavel Chromy mac
Středa Březen 17 12:04:54 CET 2004



On Sat, 24 Feb 2001, Jakub Ladman wrote:

> Ja jsem ten, kdo se puvodne ptal.
> Uz mi to funguje, nehlede na cistotu programatorskeho stylu.
> 
> Pokud nekdo mate minutku muzete se na to mrknout a "oznamkovat" mi to.
> Prilezitostne bych uvital radu, ktera by mi naznacila, jakym zpusobem
> dosahnout stejneho vysledku aniz by retezce v polich mely konst delku.
> Precejen je to program do jednocipu a tak je uspora pameti na miste.

char *menu[3]={"1. Info","2. Teplota","3. Cas/Datum"};

Takhle retezce nebudou mit konstantni delku,
ve skutecnosti se jedna o pole ukazatelu na char, cili samotne pole
obsahuje pouze 3 pointery, a nekde jinde v pameti jsou alokovany 3
retezce.

Varovani:

pokud to nadeklarujete takto
char *menu[3];
Pouzije se normalne jako printf("%s\n",menu[0]);

pak pred pouzitim 
strcpy(menu[0],"abc");
musi byt pouzito malloc(menu[0],delka) !

Nebo lze pouzit
menu[0]="abc"
cili priradit promenne typu pointer adresu retezce staticky alokovaneho
kompilatorem - da to vlastne stejny vysledek jako inicializovana promenna
uvedena uplne nahore. 

	Pavel Chromy







Další informace o konferenci Hw-list