Nejste přihlášen/a.
Zdravím, lze nějak zjistit velikost statického pole předaného přes ukazatel v C?
Mám:
char *pole[]={"prvek1","prvek2"};
int *p;
p = pole;
A pokud zavolám funkci sizeof(pole) dostanu výsledek 14 a to když podělím sizeof(pole[0]) mám 2.
Ale pokud zavolám sizeof(p) dostanu velikost pointru, tedy 4. Lze i takhle nějak zjistit velikost pole?
Máš tam zmatek, protože pole je dvourozměrné a p je jednorozměrné.
p je jen pointer a proto má délku 4.
pole je staticky deklarované a proto už kompilátor ví, že to jsou 2 pointry. Kdyby tam nebyla inicializace, mělo by délku 4.
Funkce sizeof nezjišťuje skutečnou velikost za chodu, ale deklarovanou velikost (velikost při kompilaci).
doplněno 31.12.14 01:59:Tak to v céčku nelze nijak zjistit. Musíte buď předávat i rozměr nebo používat nějakou ukončující hodnotu (char používá binární nulu.)
Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz.
Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.