Boj s pointery
Petr Zapadlo
zapik na email.cz
Středa Srpen 17 13:53:49 CEST 2022
Laicky doplním, že řetězec v C je de fakto jen ukazatel:
return strTmp;
nevrací tedy obsah řetězce, ale jen ukazatel na tento řetězec. S
důsledky uvedenými níže.
Petr
Dne 17. 08. 22 v 13:45 Jindroush napsal(a):
> Pri opusteni funkce (presneji asi pri opusteni bloku, ve kterem je
> promenna platna, ve scope) je pamet pro lokalni promennou uvolnena.
> Pointer tim padem smeruje na pamet "kde byla" vase promenna a kdyz pak
> pointer pozdeji dereferencujete, uz tato pamet muze byt obsazena
> nejakou zcela jinou promennou.
>
> Je to pomerne zakerna chyba, ktera ma tendence se projevovat velmi
> nahodne.
> J.
>
> On 17.08.2022 13:21, Michal Grunt wrote:
>> Tomu nerozumím. Takže když mám ve funkci nějakou kokální proměnou,
>> kterou následně vracím tak se vrátí (může se vrátit) něco jiného i
>> když je ve funkci jasně dané co se má vrátit?
>>
>> st 17. 8. 2022 v 11:48 odesílatel Jan Waclawek <konfera na efton.sk>
>> napsal:
>>> Bez toho aby som sa pokusil pochopit funkciu:
>>>
>>> char strTmp[100];
>>>
>>> definuje lokalnu premennu na zasobniku (stacku), ktora zanika na konci
>>> funkcie, ale
>>>
>>> return strTmp;
>>>
>>> vracia smernik na tuto premennu, ktora sa zrejme nasledne pouziva,
>>> aj ked
>>> zasobnik a tym premenna su/mozu uz byt prepisane naslednym behom
>>> programu.
>>>
>>> wek
>>>
>>> _______________________________________________
>>> HW-list mailing list - sponsored by www.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>> _______________________________________________
>> HW-list mailing list - sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>
>
Další informace o konferenci Hw-list