2010-04-05 13 views
6

¿Cuál es la forma más rápida de encontrar la cantidad de elementos en una matriz estática y una matriz dinámica?Número de elementos en matriz estática y matriz dinámica

+0

Posible duplicado: http://stackoverflow.com/questions/851716/count-repeated-elements-in-an-array-in -c –

+1

Posible duplicado: http://stackoverflow.com/questions/2347766/how-many-elements-are-full-in-ac-array –

Respuesta

10

No hay forma de encontrar la cantidad de elementos en una matriz creada dinámicamente. Para una matriz no dinámica, puede usar sizeof(array)/sizeof(type). Sin embargo, esto no es tan útil como parece:

void f(int a[]) { 
    // sizeof(a) will be the size of a pointer, probably 4 
} 

int main() { 
    int a[100]; 
    // sizeof(a)/sizeof(int) will be 100 
    f(a); 
} 

Esto se debe a la descomposición en matrices de punteros cuando se pasa a las funciones. Entonces, en ambos casos, probablemente necesite recordar el tamaño de la matriz y pasarla a funciones como un parámetro separado. Por lo tanto una función para resumir una matriz (por ejemplo) se vería así:

int sum(int a[], int n) { 
    int total = 0, i;  
    for (i = 0; i < n; i++) { 
     total += a[i]; 
    } 
    return total; 
} 
+6

Normalmente, uno usaría 'sizeof (array)/sizeof (array [0]) '. Además, puede haber formas no estándar, no portátiles para encontrar la cantidad de elementos en una matriz dinámica, pero es mejor almacenar el tamaño por separado en la creación y pasarlo a cualquier elemento que necesite conocer el tamaño. –

+0

@Dan Sí, escribir sin pensar, gracias. –

+1

@Georg Por favor, no edite el contenido técnico de mis respuestas. He escrito el código que publiqué de manera bastante consciente. Si cree que se puede mejorar, haga un comentario o publique una respuesta propia. –

Cuestiones relacionadas