<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: Arial">Buenas a todos,</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: Arial">antes de nada os comento que yo programaba en Fortran y me decidí a pasar a C porque me dijeron que era mejor y a mi me interesa ya que trabajo haciendo simulaciones numéricas. Lo que más me interesa ahora es el ahorro de memoria cuando trabajo con matrices muy grandes. Mirando el manual de C con clase  he visto como definir un puntero (ej: **A) que me permite crear una matriz a mitad de programa con la dimensión que corresponda (y así no tener que hacer dos programas, uno para calcular la dimensión y otro para trabajar con las matrices), sin embargo resulta que los punteros ocupan memoria (N*M espacios de memoria adicionales para los punteros) que no es necesaria definiendo la matriz al inicio del programa (ej: A[N][M]) como un array de dos dimensiones. Así que mi pregunta es si un  programa sencillo como
</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-FAMILY: Arial"> </span></p><span style="FONT-FAMILY: Arial">
<p>#include <iostream><br>void funcion(int B[1][2]); </p>
<p>int main() { <br>    int A[1][2]; </p>
<p>    A[0][0]=1; A[0][1]=2; A[0][2]=3;<br>    A[1][0]=4; A[1][1]=5; A[1][2]=6;<br> <br>    funcion(A); <br>    printf("A =  %i  %i  %i \n",A[0][0], A[0][1], A[0][2]);<br>    printf("     %i  %i  %i \n",A[1][0], A[1][1], A[1][2]);
<br>   <br>    getchar();<br>}<br> <br>void funcion(int B[1][2]){<br>     B[0][0]=9; B[0][1]=9; B[0][2]=9;<br>     B[1][0]=9; B[1][1]=9; B[1][2]=9;   <br>}</p></span>
<p class="MsoNormal" style="MARGIN: 5pt 0cm; mso-layout-grid-align: none"><span style="FONT-FAMILY: Arial">es más económico que</span></p>
<p class="MsoNormal" style="MARGIN: 5pt 0cm; mso-layout-grid-align: none"><span style="FONT-FAMILY: Arial">#include <iostream></span></p>
<p class="MsoNormal" style="MARGIN: 5pt 0cm; mso-layout-grid-align: none"><span lang="EN-GB" style="FONT-FAMILY: Arial; mso-ansi-language: EN-GB">void funcion(int **B); <br>int main() {   <br>   int i,n,m,**A;<br>   <br>
   n=2; m=3;<br>   A=new int *[n];<br>   for (i=0;i<n;i++){A[i]=new int [m];}</span></p>
<p class="MsoNormal" style="MARGIN: 5pt 0cm; mso-layout-grid-align: none"><span lang="EN-GB" style="FONT-FAMILY: Arial; mso-ansi-language: EN-GB">   A[0][0]=1; A[0][1]=2; A[0][2]=3;<br>   A[1][0]=4; A[1][1]=5; A[1][2]=6;
<br>   funcion(A); <br>   <br>   printf("A =  %i  %i  %i \n",A[0][0], A[0][1], A[0][2]);<br>   printf("     %i  %i  %i \n",A[1][0], A[1][1], A[1][2]);</span></p>
<p class="MsoNormal" style="MARGIN: 5pt 0cm; mso-layout-grid-align: none"><span lang="EN-GB" style="FONT-FAMILY: Arial; mso-ansi-language: EN-GB">   for (i=0;i<n;i++){delete[] A[i];}<br>   delete[] A;</span></p>
<div class="MsoNormal" style="MARGIN: 5pt 0cm; mso-layout-grid-align: none"><span lang="EN-GB" style="FONT-FAMILY: Arial; mso-ansi-language: EN-GB">   getchar();<br>}<br> <br>void funcion(int **B){<br>   B[0][0]=9; B[0][1]=9; B[0][2]=9;
<br>   B[1][0]=9; B[1][1]=9; B[1][2]=9;   <br>}</span></div>
<div class="MsoNormal" style="MARGIN: 5pt 0cm; mso-layout-grid-align: none"><span lang="EN-GB" style="FONT-FAMILY: Arial; mso-ansi-language: EN-GB"></span> </div>
<p class="MsoNormal" style="MARGIN: 5pt 0cm; mso-layout-grid-align: none"><span style="FONT-FAMILY: Arial">Si ahora tengo una matriz simétrica (A[i][j]=A[j][i]) y quiero ahorrar la memoria repetida lo que tendré es una "matriz triangular".  Mi pregunta es si me creo una estructura para almacenar esto la estructura también almacena punteros o no, ahorro  memoria con la estructura o es la misma que creando un puntero con la forma de la estructura.
</span></p>
<div class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Arial"></span> </div>
<div class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Arial"><span style="FONT-FAMILY: Arial">Una ultima preguntita más. Como puedo medir el tamaño de una estructura y sus punter para ver si me paso de la memoria RAM de mi ordenador.
</span></span></div>
<div class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Arial"><span style="FONT-FAMILY: Arial"></span></span> </div>
<div class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: Arial">Al que me conteste estas preguntas ya de antemano le doy un millón de gracias (10e6*gracias).</span></div>