[C con Clase] Ayuda con este codigo array

Steven Davidson srd4121 en njit.edu
Sab Mar 3 13:12:59 CET 2012


Hola Julián,

On Sat, Mar 3, 2012 at 3:18 AM, Julian Felipe Farfan Benitez
<julianfelipefarfan en hotmail.com> wrote:
> El inconveniente es que me esta imprimiendo esto "0x28ff10" y se supone que deberia imprimir los numeros del 1 al 27.
>

El comportamiento de 'cout <<' junto a un array es el de mostrar su
dirección de memoria que es la misma que la del primer elemento de ese
array. Si se trata de un array de tipo 'char', entonces 'cout <<' lo
interpreta como una cadena de caracteres terminada en carácter nulo, y
por tanto sí imprimirá los caracteres de la cadena.

Para imprimir cada elemento del array, tendrás que recorrer cada
elemento del array, accediendo a ello e imprimiéndolo. En tu código,
combinaría ambas tareas de la asignación de los elementos en 'numeros'
y mostarlos bajo el mismo bucle. Esto es,

for( int i=0; i<10; i++ )
{
  numeros[i] = x++;
  cout << numeros[i] << endl;
}

Como podrás ver, he cambiado el valor final de 'i' ya que definiste un
array de 10 elementos. Si te sales fuera del intervalo de los valores
válidos para los índices de un array, entonces estás accediendo a
memoria que no pertenece al array. Aquí es cuando empezamos a cometer
errores durante la ejecución y posiblemente aparecerá el infame
mensaje de error de ejecución al estilo de "Violación de segmentación:
acceso de escritura denegado".

Ya puestos, viendo el código fuente, podrías haber usado 'i' en lugar
de 'x'. Esto sería,

for( int i=0; i<10; i++ )
{
  numeros[i] = i+1;
  cout << numeros[i] << endl;
}


Espero haber aclarado las dudas.

Steven




Más información sobre la lista de distribución Cconclase