malloc()
Jaroslav Benkovsky
benkovsk na pha.pvt.cz
Pátek Únor 20 12:51:47 CET 1998
Ales Horak wrote:
> kdyz udelam napr:
>
> char *var;
> ..
> var=malloc(100);
> var=getenv("nejaka_promenna_shellu");
>
> tak je vse OK, ale kdyz to udelam takhle:
>
> char var[100];
> ..
> var=getenv("nejaka_promenna_shellu");
>
> tak mi gcc pri pokusu o preklad na tom radku "var=.." tvrdi:
> "incompatible types in assignment"
>
Neni se co divit. getenv ti vraci char*, (takze ten malloc akorat
plytva pameti) nicmene ho prirazujes do char*, takze je to ok.
Ve druhem pripade ho ale prirazujes do char[100]. To muze
sice nekdy vystupovat i jako char*, ale tehdy to oznacuje
adresu te promenne (ktera je staticky definovana) a proto mas smulu
Spravnejsi je tedy treba:
char *var = getenv("pppp");
Edheldil
Další informace o konferenci Linux