Představ si pointer jako adresu poštovní schránky :) int *schranka; - vytvoří někde schránku, do které se vejde číslo typu int a vrátí její adresu. hodnota schranka je pak ta „poštovní adresa“, hodnota *schranka je obsah té schránky. S polem je to podobně. Jenže pole není jedna schránka, pole je schránek několik. Jenže pro ty schránky musíme vytvořit místo. A vzhledem k tomu že pole je zase jenom adresa, vyrobíme pole pro jedno číslo int takhle:int *pole = malloc (sizeof (int) );malloc řekne, kolik paměti (jak velký prostor pro schránky) to pole schránek dostane přidělené. Tady je to paměť velikosti jednoho intu (sizeof(int)) . Pokud chceš vyrobit větší, třeba pole pro 5 hodnot, int *pole = malloc (5 * sizeof (int) );hodnota „pole“ - adresa první schránky v pořadí.pole[0] - obsah první schránkypole[4] - obsah páté schránkypole[5] - nesahat, to je šestá schránka, tam už nám to nepatří.Ono se to dá zapsat i takhle:pole[0] je to samé jako *(pole), pole[1] je to samé jako *(pole + 1)atd…prostě, pole[1] je obsah (značeno „*“) schránky na druhé adrese od „pole“ (pole + 1). Pošťačka jde k první (tady spíš nulté) schránce, mrkne do první vpravo od ní a vezme si její obsah :) No a realloc funguje stejně jako malloc, akorát přidělí schránkám víc / míň místa.