well here's the call

rec_function(matrix_a, matrix_b, multiply, user);

/* that's 3 already initialized matrix's, plus the size (square) */

/*and here's the function*/

int rec_function(int **a, int **b, int **c, int n)

{

int i,j;

if(n==1) //base case (works fine)

{

**c=(**a)*(**b);

return **c;

}

if(n==2)

{

**c=(**a)*(**b)+(**(a+1))*(**(b+2));

**(c+1)=(**a)*(**(b+1))+(**(a+1))*(**(b+3));

**(c+2)=(**(a+2))*(**b)+(**(a+3))*(**(b+2));

**(c+3)=(**(a+2))*(**(b+1))+(**(a+3))*(**(b+3));

return **c;

}

}

Man that looks like hell, anyways, I was under the assumption that by using **(b+1) or **(a+3) or whatever, that it would move the pointer to the right in my array, but of course it moves it down.

eg

| 4 7 |

| 6 8 | I want 7, but get 6..

Is there an easier way of doing this (I think I tried most), or am I missing something as I've never dealt with this type of issue before. I'll keep plugging away at it, but hopefully someone's has so help for me.