int
taco[10] como un array de diez enteros, taco será un puntero
al array. Por ejemplo, sea guacamole un array de 6 enteros: 6, 63,
112, 18, -52, 16. guacamole es simplemente un puntero al primer
elemento. Entonces, *guacamole equivale al valor 6. Si tratamos de
acceder al elemento guacamole[6], estamos accediendo a lo que haya
después del último elemento del array. Los resultados son inesperados.# include
<iostream.h>
void eat_at_joes(int guacamole[])
{
guacamole[0] =
1;
guacamole[1] = 2;
guacamole[2] = 3;
}
main()
{
int taco[3];
int nacho[2];
eat_at_joes(taco);
eat_at_joes(nacho);
}
Al definir la función, no hemos puesto ningún número entre los
corchetes. Esto significa que estamos permitiendo que un array de cualquier
tamaño pueda ser pasado a la función. En la función main, hemos declarado dos
arrays de enteros, taco y nacho. Primero pasamos taco a la función, que en
realidad es la direccion del array taco. Ahora bien, el segundo array, nacho,
tiene sólo dos elementos. Cuando la función trate de acceder al tercer elemento
del array, que realmente no existe. Ya que los arrays son muchas variables
almacenadas una detrás de otra en la memoria del ordenador, tratará y accederá a
la variable almacenada despueés del segundo elemento del array, que no
existe.# include <iostream.h>
void eat_at_joes(int guacamole[], int size)
{
if (size >
0)
guacamole[0] = 1;
if (size >
1)
guacamole[1] = 2;
if (size >
2)
guacamole[2] = 3;
}
main()
{
int taco[3];
int nacho[2];
eat_at_joes(taco,3);
eat_at_joes(nacho,2);
}