#include <stdio.h>
#include <stdlib.h>

int traccia (int **a, int n);

int main()
{
   int i,j, n,t;
   int **a; 
   
   n=5;
   // supponiamo di avere abbastanza memoria per allocare la matrice
   a= (int**) calloc (n, sizeof(int*));
   for(i=0; i< n; i++)
       a[i]= (int*) calloc (n, sizeof(int));
   
   for(i=0; i< n; i++)
      for(j=0; j< n; j++)
       a[i][j]= i*j;   
   
   t = traccia(a,n);
  
   printf ("La traccia della matrice e': %d\n",t);
   
   for (i=0; i<n; i++)
      free(a[i]);
   free(a);
   getchar();     
   return 0;
}

int traccia  (int **a, int n)
{
   int i, tr;
   tr=0;
   for(i=0; i< n; i++)
      tr += a[i][i];
   return tr;
   
}