On Thu, 2003-01-16 at 14:12, Dorin Lazar wrote:
> > Vrei sa afli numarul de elemente al unui array (tratandu-l ca pe un
> > pointer), nu?
> > int *p = (int*)malloc(100*sizeof(int));
> > nr_elem = (sizeof p / sizeof *p); // imparti marimea totala la
> Adica 1?
> sizeof (p) nu e sizeof(int *)?
> sizeof *p nu e sizeof (int)?
> cel mai des sizeof (int *) == sizeof(int)
Nu, nu e asa cum spui. Dar nici cum ziceam eu :) Trucul l-am vazut in
"Thinking in C++", de Bruce Eckel, si abia azi vad ca merge numai pentru
array-uri a caror marime e stiuta deja de compilator:
int p1[100] = {0}; // p[1 .. 99] tot la 0 vor fi initializate
char p2[] = "hello world";
Aici sizeof p1 va fi 100 * sizeof int, sau 100 * sizeof *p1, la fel se
intampla cu p2. In schimb, pt un pointer creat cu malloc, am observat ca
sizeof p == 4 bytes
indiferent de tipul lui p.
---
Pentru dezabonare, trimiteti mail la
[EMAIL PROTECTED] cu subiectul 'unsubscribe rlug'.
REGULI, arhive si alte informatii: http://www.lug.ro/mlist/