char pole[100];
int size = 512;
*((int*)pole)=size;
Moja otázka znie čo sa stane? Alokuje sa nová pamäť veľkosti 4B (integer), pôvodná pamäť na adrese 'pole' sa uvoľní a do 'pole' sa priradí adresa nového bloku pamäte a zvyšok pola je navždy stratený? Alebo je to inak? Respektíve čo sa teda stane?
"pole" bez indexu je tak jak tak ukazatel na pole znaku... vesmes si prepises prvni 4 bajty integerem... cca na 244, 1, 0, 0 (pokud teda nejsi na nejakem big endian procesoru)
Nahlásit jako SPAM
IP: 93.91.152.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Takže ak som mal napr v pole[1] uložený nejaké dáta tak si ich prepíšem, správne? Respektíve ak sa k nim budem chcieť dostať char znak = *(++pole); tak získam len určitú časť bitov z toho uloženého integeru na pole[0]?
A bude ešte možné pristupovať k prvkom štýlom pole[0] odkazuje na prvý byte, pole[1] na druhý byte....
Keď dám int cislo = pole[0]; hodí mi to tam ten integer ktorý som uložil?
Prečo potom tento kód mi vypíše 16777216? Myslel som ze na adrese pole+5 by malo byť 00000000 to iste na +6 a 7 a na +8 00000001 čiže keď vytiahnem adresu ptr+5 ako integer malo by to zobrať 4B počínajúc od ptr+5 takže 00000000 00000000 00000000 00000001. Kde je chyba?