a es un puntero...cuando hago
test(a); estoy pasando un puntero que apunta a la primera de las variables. No hay lógica pasar un puntero si no sabes el tamaño que tiene el array. Si tiene un tamaño de 7 y imprimo a[10] lo hará sin ningún problema XDDD, bien venido a cpp como dice paueky "Estamos solos en el mundo"y nadie te va a mirar eso. Imaginas que declaras un array de 7 y vas y guardas en la casilla 7, estas invadiendo memoria de otros programas. Es mas...hay quien dice que el ultimo espacio nunca debes usarlo. Si necesitas 7 pues creas un array de 8 y dejas uno libre el ultimo al final.
si creo un array de 10 y voy a a[1000] y le imprimo o le meto algo ahi si no salta un error a la hora de compilar y avisa el Sistema operativo tienes acceso a toda la memoria XDDD
Código C++:
Ver original#include <iostream>
using namespace std;
void test ( int a[], int i ) {
for ( int indice = 0; indice != i; indice++ ){
cout << *a << endl; // para que veas que a es un puntero si quitas la * imprime la direcion de memoria :)
a++; // cuando incrementamos la a++ estamos pasando a apuntar la seguinte variable
}
}
int main () {
int a[7] = {1, 2, 3, 4};
test ( a, (sizeof ( a )/sizeof ( int )) );
cin.ignore();
return 0;
}
Código C++:
Ver original#include <iostream>
using namespace std;
int main () {
int a[7];
//aun que te lo imprima no sabes que tipo es, int, o char, o string... la creo otro programa.
//estamos decindo que imprima 1000 casillas apartir de donde se guarda la primera variable que apunta a.
//Si el sistema operativo no tira errores esta operacion es perfectamente posible.
//Si cambias algo que no sabes estas poniendo en riesgo todo el sistema.
cout << a[1000];
cin.ignore();
return 0;
}