C语言编程: [Warning] passing arg 2 of `exchange‘
出现
Warning] passing arg 1 of `exchange' from incompatible pointer type
[Warning] passing arg 2 of `exchange' from incompatible pointer type
求大神指点迷津,这种warning我还是头回见,也不知道到底什么意思。。。
代码如下:
#include <stdio.h>
#define size 200
void exchange(int **a, int **b, int M, int N);
int main()
{
int matix_a[size][size], matix_b[size][size];
int m, n;
int i, j;
m=n=5;
for(j = 0;j < 5;j++)
{
for(i = 0;i < 5;i++)
scanf("%d",&matix_a[j][i]);
}
for(j = 0;j < 5;j++)
{
for(i = 0;i < 5;i++)
scanf("%d",&matix_b[j][i]);
}
exchange(matix_a, matix_b, m, n);
for(j = 0;j < 5;j++)
{
for(i = 0;i < 5;i++)
printf("%d\t",matix_a[j][i]);
printf("\n");
}
for(j = 0;j < 5;j++)
{
for(i = 0;i < 5;i++)
printf("%d\t",matix_b[j][i]);
printf("\n");
}
system("pause");
return 0;
}
void exchange(int **a, int **b, int M, int N)
{
int **c;
int i, j;
for(j = 0;j < M;j++)
for(i = 0;i < N;i++)
{
c[j][i] = a[j][i];
a[j][i] = b[j][i];
b[j][i] = c[j][i];
}
}
[解决办法]
#include <stdio.h>
#include <malloc.h>
#define size 200
void exchange(int **a, int **b, int M, int N);
int main()
{
int **matix_a=(int **)malloc(sizeof(int)*25);
int **matix_b=(int **)malloc(sizeof(int)*25);
int m, n;
int i, j;
m=n=5;
for(j = 0;j < 5;j++)
{
for(i = 0;i < 5;i++)
scanf("%d",&*(*(matix_a+j)+i));
}
for(j = 0;j < 5;j++)
{
for(i = 0;i < 5;i++)
scanf("%d",&*(*(matix_b+j)+i));
}
for(j = 0;j < 5;j++)
{
for(i = 0;i < 5;i++)
printf("%d ",*(*(matix_a+j)+i));
printf("\n");
}
for(j = 0;j < 5;j++)
{
for(i = 0;i < 5;i++)
printf("%d ",*(*(matix_b+j)+i));
printf("\n");
}
exchange(matix_a, matix_b, m, n);
for(j = 0;j < 5;j++)
{
for(i = 0;i < 5;i++)
printf("%d\t",matix_a[j][i]);
printf("\n");
}
for(j = 0;j < 5;j++)
{
for(i = 0;i < 5;i++)
printf("%d\t",matix_b[j][i]);
printf("\n");
}
system("pause");
return 0;
}
void exchange(int **a, int **b, int M, int N)
{
int c;
int i, j;
for(j = 0;j < M;j++)
for(i = 0;i < N;i++)
{
c = *(*(a+j)+i);
*(*(a+j)+i) = *(*(b+j)+i);
*(*(b+j)+i) = c;
}
}