¿Cómo encuentro la longitud/número de elementos presentes para una matriz? [duplicate]

2 minutos de lectura

avatar de usuario de neha dhage
neha dhage

Posible duplicado:

longitud de la matriz en el argumento de la función

El tamaño de mi matriz es 5. Por ejemplo:

arrCustId[5]

¿Cómo puedo saber cuántos ID de cliente ya están presentes en mi matriz? En resumen, ¿cómo encontrar la longitud de la matriz?

Avatar de usuario de Ben Stott
ben stott

Si la matriz está asignada estáticamente, use sizeof(array) / sizeof(array[0])

Sin embargo, si se asigna dinámicamente, lamentablemente no tendrá suerte, ya que este truco siempre volverá. sizeof(pointer_type)/sizeof(array[0]) (que será 4 en un sistema de 32 bits con caracteres * s) Puede a) mantener un #define (o const) constante, o b) mantener una variable, sin embargo.

  • Si se asigna dinámicamente, volverá sizeof(pointer) / sizeof(array[0]).

    – sam hocevar

    09/04/2011 a las 12:00

¿Quiere decir cuánto tiempo es la matriz en sí, o cuántos ID de clientes hay en ella?

Porque la respuesta a la primera pregunta es fácil: 5 (o si no quieres codificarla, la respuesta de Ben Stott).

Pero la respuesta a la otra pregunta no puede determinarse automáticamente. Presumiblemente, ha asignado una matriz de longitud 5, pero inicialmente tendrá 0 ID de cliente allí, y las pondrá una a la vez, y su pregunta es, “¿cuántas ID de cliente he puesto en la matriz?”

C no te puedo decir esto. Deberá mantener una variable separada, int numCustIds (Por ejemplo). Cada vez que coloque una identificación de cliente en la matriz, incremente esa variable. Entonces puedes decir cuántos has puesto.

  • +1 por simplicidad. Si quieres saber cuántos clientes hay, solo recuerda cuántos pones allí.

    – sam hocevar

    9 de abril de 2011 a las 12:11

No estoy seguro de saber exactamente lo que quieres decir.

Pero para obtener la longitud de una matriz inicializada,

¿No funciona strlen (cadena)?

  • strlen se usa solo en cadenas porque busca en la matriz inicializada el terminador NULL (\0). Por lo tanto, solo debe usarse con char * ya que son un poco especiales.

    – juda

    9 de abril de 2011 a las 15:54

  • bueno, tienes razón 🙂 pero date cuenta de que una cadena es en realidad una matriz de caracteres…

    – Joe DF

    19 de abril de 2013 a las 1:14


  • Pero hay un \0 en otros tipos de arreglos?

    – Charles

    18 de noviembre de 2015 a las 15:13

¿Ha sido útil esta solución?