Problema al pasar un arreglo como parametro
Publicado por Guspo (1 intervención) el 03/04/2010 19:59:06
Me piden implementar una funcion que dado un arreglo lo imprima en la pantalla:
#include <iostream.h>
#include <stdio.h>
void mostrarArreglo (int arreglo[])
{
int n = sizeof (arreglo) / sizeof (int); //calcula el numero de elementos contenidos en el arreglo
for (int i = 0; i < n; i++)
{
cout << arreglo[i];
if (i < (n - 1))
cout << ", ";
}
}
Si llamamos a la funcion mostrarArreglo desde el main y le pasamos un arreglo de cierta cantidad de elementos aparentemente lo recibe sin ningun problema el parametro int arreglo[]. Si desde el ciclo for nosotros mismos especificamos cuantos elementos estan contenidos dentro del arreglo en vez de hacer el calculo en la variable n, visualiza el arreglo sin nungun problema. Pero cuando intento realizar el calculo:
int n = sizeof (arreglo) / sizeof (int);
la llamada a la funcion sizeof (arreglo) me arroja simpre como resultado 4, cuando en realidad deberia arrojar 4 * (el numero de elementos contenidos en arreglo). La razon por la que deberia multiplicar 4, es porque es esa la asignacion de memoria que se le da a un unico valor entero (int). Ahora ya entederan la operacion completa para el calculo de n. Si aparentemente la intruccion esta bien implementada, ¿porque no me calcula el numero total de elementos contenidos en el arreglo?
#include <iostream.h>
#include <stdio.h>
void mostrarArreglo (int arreglo[])
{
int n = sizeof (arreglo) / sizeof (int); //calcula el numero de elementos contenidos en el arreglo
for (int i = 0; i < n; i++)
{
cout << arreglo[i];
if (i < (n - 1))
cout << ", ";
}
}
Si llamamos a la funcion mostrarArreglo desde el main y le pasamos un arreglo de cierta cantidad de elementos aparentemente lo recibe sin ningun problema el parametro int arreglo[]. Si desde el ciclo for nosotros mismos especificamos cuantos elementos estan contenidos dentro del arreglo en vez de hacer el calculo en la variable n, visualiza el arreglo sin nungun problema. Pero cuando intento realizar el calculo:
int n = sizeof (arreglo) / sizeof (int);
la llamada a la funcion sizeof (arreglo) me arroja simpre como resultado 4, cuando en realidad deberia arrojar 4 * (el numero de elementos contenidos en arreglo). La razon por la que deberia multiplicar 4, es porque es esa la asignacion de memoria que se le da a un unico valor entero (int). Ahora ya entederan la operacion completa para el calculo de n. Si aparentemente la intruccion esta bien implementada, ¿porque no me calcula el numero total de elementos contenidos en el arreglo?
Valora esta pregunta


0