Ver Mensaje Individual
  #21 (permalink)  
Antiguo 14/04/2014, 08:09
Avatar de vangodp
vangodp
 
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: Como contar el total de items en un array

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
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. void test ( int a[], int i ) {
  5.     for ( int indice = 0; indice != i; indice++ ){
  6.        cout << *a << endl;   // para que veas que a es un puntero si quitas la * imprime la direcion de memoria :)
  7.        a++;                  // cuando incrementamos la a++ estamos pasando a apuntar la seguinte variable
  8.        
  9.     }
  10. }
  11.  
  12. int main () {
  13.     int a[7] = {1, 2, 3, 4};
  14.    
  15.     test ( a, (sizeof ( a )/sizeof ( int )) );
  16.    
  17.    
  18.     cin.ignore();
  19.     return 0;
  20. }



Código C++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3.  
  4.  
  5. int main () {
  6.     int a[7];
  7.     //aun que te lo imprima no sabes que tipo es, int, o char, o string... la creo otro programa.
  8.     //estamos decindo que imprima 1000 casillas apartir de donde se guarda la primera variable que apunta a.
  9.     //Si el sistema operativo no tira errores esta operacion es perfectamente posible.
  10.     //Si cambias algo que no sabes estas poniendo en riesgo todo el sistema.
  11.     cout << a[1000];
  12.     cin.ignore();
  13.     return 0;
  14. }