怎样让这个转置矩阵在主函数输出呢

#include <stdio.h>
void Transpose(int (p)[4]);
void main()
{
int i,j;
int arr[4][4];
int (p)[4]=arr;
for(i=0;i<4;i++){
for(j=0;j<4;j++){
scanf("%d",&arr[i][j]);
}
}
Transpose(arr);
}
void Transpose(int (p)[4])
{
int i,j,t;
for(i=0;i<4;i++){
for(j=0;j<4;j++){
t=
(
(p+i)+j);
((p+i)+j)=
((p+j)+i);
((p+j)+i)=t;
printf("%d ",
(*(p+i)+j));
}
printf("\n");
}
}

在主函数中继续用双循环输出arr二维数组元素啊

#include <stdio.h>
void Transpose(int (*p)[4]);
void main()
{
    int i,j;
    int arr[4][4];
    int (*p)[4]=arr;
    for(i=0;i<4;i++){
        for(j=0;j<4;j++){
            scanf("%d",&arr[i][j]);
        }
    }
    Transpose(arr);
    for(i=0;i<4;i++){
        for(j=0;j<4;j++){
            printf("%d ",arr[i][j]);
        }
        printf("\n");
    }
}
void Transpose(int (*p)[4])
{
    int i,j,t;
    for(i=0;i<4;i++){
        for(j=0;j<i;j++){
            t=*(*(p+i)+j);
            *(*(p+i)+j)=*(*(p+j)+i);
            *(*(p+j)+i)=t;
        }
    }
}