Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Cómo determinar el tamaño de un arreglo desde una funcion?

Estas en el tema de Cómo determinar el tamaño de un arreglo desde una funcion? en el foro de C/C++ en Foros del Web. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código C++: Ver original #include <iostream> #include <string> using namespace std ;   void arraySize ( string array [ ] ) {   ...
  #1 (permalink)  
Antiguo 03/05/2012, 17:26
 
Fecha de Ingreso: mayo-2012
Mensajes: 2
Antigüedad: 12 años
Puntos: 0
Cómo determinar el tamaño de un arreglo desde una funcion?

Código C++:
Ver original
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. void arraySize(string array[]) {
  6.     //... aqui no sale
  7.     int size = sizeof(array)/sizeof(array[0]);
  8.     cout << "size: " << size << endl;
  9. }
  10.  
  11. int main() {
  12.     string nombre[] = {"una cadena","otra cadena","y una más"};
  13.     //... aqui si sale
  14.     cout << "size: " << sizeof(nombre)/sizeof(string) << endl;
  15.     arraySize(nombre);
  16.     return 0;
  17. }

SALIDA--------------------------------

size: 3
size: 1

PREGUNTA----------------------------
¿Si me estoy refiriendo al mismo vector? ¿por que la información es diferente?

Necesito determinar el tamaño de este arreglo desde dentro de la función ¿como lo hago?...

GRACIAS------------------------------

Última edición por thecharliex; 03/05/2012 a las 17:28 Razón: Puse una pregunta relacionada con el tema
  #2 (permalink)  
Antiguo 03/05/2012, 17:36
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Cómo determinar el tamaño de un arreglo desde una funcion?

Simplemente no se puede. Cuando te mueves a una funcion, lo que envias es su puntero y este tiene tamaño de 4 bytes.

Necesariamente necesitas llevar el tamaño aparte. O trabajarlo en esa funcion.
  #3 (permalink)  
Antiguo 03/05/2012, 22:06
 
Fecha de Ingreso: mayo-2012
Mensajes: 2
Antigüedad: 12 años
Puntos: 0
Respuesta: Cómo determinar el tamaño de un arreglo desde una funcion?

Cita:
Iniciado por sam90 Ver Mensaje
Simplemente no se puede. Cuando te mueves a una funcion, lo que envias es su puntero y este tiene tamaño de 4 bytes.

Necesariamente necesitas llevar el tamaño aparte. O trabajarlo en esa funcion.
----
Si lo que se envía un es un puntero, en teoría (creo yo, no soy experto), voy a trater de recorrerlo hasta que sea null, si esto funciona me daría el tamaño del arreglo, voy a tratar y luego les digo como me fue, gracias :arriba
----
aun estoy buscando... ahora me encontre con esto [URL="http://www.forosdelweb.com/f96/obtener-tamano-array-dinamico-568584/"]en el foro[/URL], que es como mi problema...

perooo.....

en el caso de int main(argc, argv[]), es decir, los paramentros en el main, argc guarda el numero de parametros ¿no hay foma de hacer algo parecido????

Última edición por thecharliex; 04/05/2012 a las 00:50 Razón: Encontre algo en el foro
  #4 (permalink)  
Antiguo 04/05/2012, 05:11
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Cómo determinar el tamaño de un arreglo desde una funcion?

No hay otra forma, mas que llevar el control de la cantidad de elementos que tiene un array.
No te confundas con otros lenguajes que son de mas alto nivel que llevan internamente la cantidad de elementos. Los que lo hacen ser mas pesados.

Si te fijas en c++ existe una clase llamada Vector que hace lo que quieres...pero como veras la estructura lleva internamente la cantidad de elemenetos.

Saludos

Etiquetas: preguntas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:23.