如果用行指针,最后输出时可以用*(*p+i) //相当于*(*(p+0)+i)
如果用普通指针,最后输出可以用*(p+i)
//行指针 取两次地址,所以定位的时候直接p=a;
#include<stdio.h>
int main()
{
int a[4][4]=
{
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16}
};
int (*p)[4],temp,i,j;
p=a;
for(i=0;i<4;i++)
{
for(j=i+1;j<4;j++)
{
temp=*(*(p+i)+j);
*(*(p+i)+j)=*(*(p+j)+i);
*(*(p+j)+i)=temp;
}
}
for(i=0;i<16;i++)
{
if(i%4==0) printf("\n");
printf("%d,",*(*p+i));
}
return 0;
}