#include <iostream>
using namespace std;
double global[3][3] = {{1.0, 2.0, 3.0}, {4.0, 5.0, 6.0}, {7.0, 8.0, 9.0}};
//1era forma: Usando un argumento
double* primera(double arg[3][3])
{
return (double*)arg;
}
//2da forma: Usando una variable global o estática
double* segunda(void)
{
return (double*)global;
}
//3ra forma: Usando memoria dinámica
double** tercera(void)
{
double** var = new double* [3];
var[0] = new double[3];
var[1] = new double[3];
var[2] = new double[3];
var[0][0] = 1.0; var[0][1] = 2.0; var[0][2] = 3.0;
var[1][0] = 4.0; var[1][1] = 5.0; var[1][2] = 6.0;
var[2][0] = 7.0; var[2][1] = 8.0; var[2][2] = 9.0;
return var;
}
int main()
{
double local[3][3] = {{1.0, 2.0, 3.0}, {4.0, 5.0, 6.0}, {7.0, 8.0, 9.0}};
double* p1 = primera(local);
double* p2 = segunda();
double** p3 = tercera();
int j, i; //columnas y filas
//Impriendo por la primera forma
for(j = 0; j < 3; ++j)
{
for(i = 0; i < 3; ++i)
cout << ((double*)&p1[j])[i] << ' ';
cout << endl;
}
//Impriendo por la segunda forma
for(j = 0; j < 3; ++j)
{
for(i = 0; i < 3; ++i)
cout << ((double*)&p2[j])[i] << ' ';
cout << endl;
}
//Impriendo por la tercera forma
for(j = 0; j < 3; ++j)
{
for(i = 0; i < 3; ++i)
cout << p3[j][i] << ' ';
cout << endl;
}
delete[] p3[2];
delete[] p3[1];
delete[] p3[0];
delete[] p3;
return 0;
}