[C con Clase] matrices y punteros

rodolfo rosso paz rodolforossopaz en hotmail.com
Dom Jun 10 05:08:29 CEST 2007


/*
    Hola.-

    Agradezco a Steven y a Salvador por sus explicaciones  acerca  de porque
    strcpy(), y no una copia simple de punteros, como siempre muy 
didacticos,
    asi que todo aclarado.

    Mi duda de ahora, dirigida a quien tenga el tiempo y las ganas, es la 
siguiente,
    he estado experimentando un poco con matrices y punteros; no es que no 
lo entienda
    del todo, pero tengo algunos claros que me gustaria que alguien con 
experiencia
    me pudiera explicar.

    En la corrida del programa de abajo, en la tercera columna estan mis 
apreciaciones
    de lo que supongo que hace el compilador, y en esa misma columna estan 
incorporadas
    mis preguntas, si alguien pudiera cortarlo y correrlo, le estaria muy 
agradecido si
    pudiera corregir mis apreciaciones (si estuvieran equivocadas) y 
contestar las
    3 preguntitas.

    Espero no estar abusando de su generosidad, una vez mas gracias
    y que Dios los bengiga.

    Rodolfo

*/

#include <iostream>
using namespace std;

void ImprimeMatriz( double mat_ref[][4] )
{
   //  cout << setfixed(2);
     for(int i = 0; i<=2; i++)
     {
        for(int j = 0; j<=3; j++)
            cout << mat_ref[i][j] << "\t";
        cout << "\n";
     }
     cout << "\n";
}

int main()
{
    double mat[3][4] = {{0.0,0.1,0.2,0.3},
                        {1.0,1.1,1.2,1.3},
                        {2.0,2.1,2.2,2.3}};
    ImprimeMatriz(mat);
    int i = 1, j = 2;
    double* p = &mat[0][0];

    cout << "mat              " << mat  << "\tmuestra la direccion final a 
la que\n";
    cout <<                         "\t\t\t\tapunta mat, osea la de 
mat[0][0]\n";
    cout << "&mat             " << &mat  << "\t1. porque no muestra la 
direcc de mat?\n";
    cout << "*mat             " << *mat  << "\tmuestra el contenido de la 
direccion\n";
    cout <<                         "\t\t\t\tcontenida en mat\n\n";

    cout << "\nmat+1            " << mat+1 << "\tmuestra la direccion final 
a la que\n";
    cout <<                         "\t\t\t\tapunta o sea la direccion de 
mat[1][0]\n";
    cout << "*(mat+1)         " << *(mat+1) << "\tmuestra el contenido de la 
direccion\n";
    cout <<                         "\t\t\t\tque contiene mat+1\n";
    cout << "mat[1]           " << mat[1] << "\tdireccion final a que apunta 
mat[1]\n";
    cout << "&mat[1]          " << &mat[1] << "\t2. porque no muestra la 
direccion de mat[1]\n";
    cout << "*mat[1]          " << *mat[1] << "\t\tmuestra el contenido de 
la direccion\n";
    cout <<                              "\t\t\t\tque contiene mat[1]\n\n";

    cout << "\n&mat[0][1]       " << &mat[0][1] << "\t3. porque aqui si 
muestra la direccion\n";
    cout <<                              "\t\t\t\tde mat[0][1]\n";

    system("PAUSE");
    return 0;
}

_________________________________________________________________
Charla con tus amigos en línea mediante MSN Messenger: 
http://messenger.latam.msn.com/





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