Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/07/2011, 20:46
Avatar de sbcl
sbcl
 
Fecha de Ingreso: julio-2011
Mensajes: 29
Antigüedad: 12 años, 9 meses
Puntos: 5
Duda con Punteros.

Bueno, acabo de registrarme en el foro recomendado por un amigo.
mi problema es el siguiente:
Estoy aprendiendo punteros, y todavia tengo cierta confusion acerca de cuando tengo que pasar punteros , o valores en si, etc.

Number_array es una funcion que se le pasa un array (por referencia) unidimensional de una x longitud, y se lo numera.
Por ejemplo

int a [2];
number_array (a);
a[0] = 0
a[1] = 1
a[2] = 2


Para establecer el limite del for, uso iUbound (para los que usen vb, tiene la misma funcion del ubound, pero solo con ints)
su objeto es devolver el limite superior de un array de Ints (el cual tiene como parámetro).

Esto sencillamente tendria que escribir via Cout, 0 1 2. (que serian las 3 posiciones de a)
Pero me escribe 0 *numero enorme* *numero enorme* , los cuales supongo que seran los valores con los que se inicializa el array.

El problema de esto, es que el iUbound no funciona, el sizeof(arr) me devuelve 4(Que es la longitud del puntero), cuando deberia darme 12.

Y mi duda es, como tengo que pasar ese array, que en vez de que me lo tome como puntero, me lo tome como el array entero.

Si algo no se entendio, por favor pregunten, soy medio burro para explicar asi que si no de a entender algo pregunten y contesto ^^

Codigo:

Código:
int i_ubound (int arr[])
{
  return (sizeof(arr) / sizeof(int)) - 1;  
}

void number_array(int arr[])
{
   int limit,x;
   int* p = arr;
   limit = i_ubound(arr);
   for (x = 0;x <= limit;x++)
   {
       *p = x;
       p++;
   }    
}

int main()
{
   int a[3];
   number_array(a);
   cout  << a[0] << "   " << a[1] << "    " << a[2];
   wait(5);   
}
Muchas gracias!

Última edición por sbcl; 12/07/2011 a las 21:07