//方法一: #include <stdio.h> void ReversePrint(int *a); int main() { int arr[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; //arry数组的定义和初始化 //先执行行交换 //在定义一个指针数组来容纳来容纳每一个一维数组的首地址 int *p1=*arr; int *p2=*(arr+1); int *p3=*(arr+2);
int *p[3]={p1,p2,p3}; int *temp; temp=p1; p1=p3; p3=temp;
这是我的第一段代码,不走寻常路
这个代码是我参考其他同学的代码,可不是抄袭啊
//主函数中定义如下二维数组:
//int arr[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
//编写函数ReversePrint()使用数组指针的方式传递参数,并以指针法逆序输出如下:
//12, 11, 10, 9
//8, 7, 6, 5
//4,3,2,1
//方法一:
#include <stdio.h>
void ReversePrint(int *a);
int main()
{
int arr[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; //arry数组的定义和初始化
//先执行行交换
//在定义一个指针数组来容纳来容纳每一个一维数组的首地址
int *p1=*arr;
int *p2=*(arr+1);
int *p3=*(arr+2);
int *p[3]={p1,p2,p3};
int *temp;
temp=p1;
p1=p3;
p3=temp;
for(int i=0;i<=2;i++) //循环行地址
ReversePrint(*(p+i)); //对二维数组中的一维数组进行处理
return 0;
}
void ReversePrint(int *a) //ReversePrint函数的定义
{ int temp=0;
for(int j=0;j<=1;j++) //单个元素交换值
{
temp=*(a+j);
*(a+j)=*(a+3-j);
*(a+3-j)=temp;
}
for(j=0;j<=3;j++)
printf("%d ",*(a+j));
printf(" ");
}
//方法二: 将二维数组看作一维数组来实现逆序
/*#include <stdio.h>
void ReversePrint(int a[3][4]); //ReversePrint()函数的申明
int main()
{
int arr[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
ReversePrint(arr); //ReversePrint函数的调用
return 0;
}
void ReversePrint(int a[3][4])
{ int temp=0;
for(int i=0;i<=5;i++)
{
temp=*(*a+i);
*(*a+i)=*(*a+11-i);
*(*a+11-i)=temp;
}
for(i=0;i<=2;i++)
{ for(int j=0;j<=3;j++)
printf("%d ",*(*(a+i)+j));
putchar(10);
}
}*/
好像都有点复杂哈