double det(double *a, int n){
double *temp;
//中略
temp = (double*)malloc(sizeof(double)*n*n);
for(i=0; i<n; i++) for(j=0; j<n; j++) temp(i*n+j) = a(i*n+j)
//後略
ってやるのはどう?
関数に渡すときにキャストして。