I'm trying to rotate a matrix inplace (clockwise direction). Below is my code, everything seems right but I'm getting runtime error. Can anybody explain to me why I'm getting runtime error.


Code:
#include<stdio.h>
#define SIZE 4
int matrix[4][4] = { {10,11,12,13}, {14,15,16,17}, {18,19,20,21}, {22,23,24,25} };
 
void swap(int *p, int *q)
{
    int *t;
    *t = *p;
    *p = *q;
    *q = *t;
}
 
void printMatrix()
{
    int i, j;
    for (i = 0; i < SIZE; ++i)
    {
        for (j = 0; j < SIZE; ++j)
        {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }
}
 
int main()
{
    int first, last, i, t, n = 0;
    printf("Before Rotation:\n");
    printMatrix();
 
    while(n < SIZE/2)
    {
        first = n; 
        last = (SIZE-1)-n;
 
        /* Save First Element */
        t = matrix[n][n+1];
 
        /* Top Row */
        for (i = first; i <= last; ++i)
        {
            swap(&t, &matrix[first][i]);
        }
 
        /* Last Column */
        for (i = first+1; i <= last; ++i)
        {
            swap(&t, &matrix[i][last]);
        }
 
        /* Bottom Row */
        for (i = last-1; i >= first; --i)
        {
            swap(&t, &matrix[last][i]);
        }
 
        /* First Column */
        for (i = last-1; i >= first; --i)
        {
            swap(&t, &matrix[i][first]);
        }
 
        ++n;
    }
 
    printf("After Rotation:\n");
    printMatrix();
}