首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C语言编程: [Warning] passing arg 二 of `exchange‘

2013-01-06 
C语言编程: [Warning] passing arg 2 of `exchange‘出现Warning] passing arg 1 of `exchange from incom

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;
       }
}

热点排行