读书人

C语言编程: [Warning] passing arg 二

发布时间: 2013-01-06 15:44:48 作者: rapoo

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>
#define size 200
void exchange(int **a, int **b, int M, int N);
int main()
{
int **matix_a, **matix_b;
……

你没有给指针分配空间
就好像下面这样的程序
int *p;
p[2] = 2;
a = p[3];
[解决办法]
#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;
}
}

读书人网 >C++

热点推荐