菜鸟的问题?帮忙看一下!
这是一个二维数组转置的问题,在VC2008下调试的,我有几个地方很不明白:
请看下边:
#include<stdio.h>
void main()
{
void enter_a(int (*pt)[3]);
void swap_a(int (*pt)[3]);
void print_result(int (*pt)[3]);
int a[3][3],(*p)[3];
p=a;
enter_a(p);
swap_a(p);
print_result(p);
printf("Press any key to continue...\n");
getchar();//此处为何得用两个getchar才能让程序运行完后不消失?还有好方法吗?
getchar();
}
void enter_a(int (*pt)[3])//输入二维数组,指针下边用得正确吗?
{
int i,j;
printf("Please enter the array:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
scanf("%d",&pt[i][j]);//此处有警告,建议用scanf_s代替,为什么呢?
}
}
void swap_a(int (*pt)[3])//数组转置函数,有什么更好的方法吗?
{
int i,j,temp[3][3];
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
temp[j][i]=pt[i][j];
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
pt[i][j]=temp[i][j];
}
}
void print_result(int (*pt)[3])//输出结果;
{
int i,j;
printf("\nThe new array:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%d ",pt[i][j]);
printf("\n");
}
}