标题:运行正常,但是有很多警告,请大侠给完善一下
取消只看楼主
xdh0817
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:193
专家分:195
注 册:2011-10-20
结帖率:92.86%
已结贴  问题点数:1 回复次数:3 
运行正常,但是有很多警告,请大侠给完善一下
#include<stdio.h>
void process(int (*p)[5])
{
  int i,j,k,m,*max,*min[25];
  max=*p;
  for(i=0;i<=4;i++)
  for(j=0;j<=4;j++)
  if((*(p+i)+j)>*max) max=*(p+i)+j;
  k=*(*(p+2)+2);
  *(*(p+2)+2)=*max;
  *max=k;
  for(i=0;i<=4;i++)
  for(j=0;j<=4;j++)
  min[i*5+j]=*(p+i)+j;
  for(i=0;i<=3;i++)
  {
         k=i;
         for(j=i+1;j<=24;j++)
         if(*min[j]<*min[k]) k=j;
         if(k!=i)
         {
          m=min[i];min[i]=min[k];min[k]=m;
         }
  }
  k=**p;**p=*min[0];*min[0]=k;
  k=*(*p+4);*(*p+4)=*min[1];*min[1]=k;
  k=**(p+4);**(p+4)=*min[2];*min[2]=k;
  k=*(*(p+4)+4);*(*(p+4)+4)=*min[3];*min[3]=k;
}
void main()
{
 int i,j,*p,a[5][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25};
     p=a;
    process(p);
    for(i=0;i<=4;i++)
  {for(j=0;j<=4;j++)
  printf("%4d",a[i][j]);
  printf("\n");
  }
}
搜索更多相关主题的帖子: include process 
2011-11-05 20:56
xdh0817
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:193
专家分:195
注 册:2011-10-20
得分:0 
以下是引用khaz在2011-11-6 00:12:35的发言:

a的类型是char (*)[5],p的类型是char *
p=a会被警告
*((*p+i)+j)可以简化为p[j]方便理解。
其他不想说太多 理解第一条就不会犯那么多警告




多谢指点~~~
2011-11-06 01:12
xdh0817
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:193
专家分:195
注 册:2011-10-20
得分:0 
回复 3楼 xdh0817
#include<stdio.h>
void process(int (*p)[5])
{
  int i,j,k,*m,*max,*min[25];
  max=*p;
  for(i=0;i<=4;i++)
  for(j=0;j<=4;j++)
  if(p[i][j]>*max) max=&p[i][j];
  k=p[2][2];
  p[2][2]=*max;
  *max=k;
  for(i=0;i<=4;i++)
  for(j=0;j<=4;j++)
  min[i*5+j]=*(p+i)+j;
  for(i=0;i<=3;i++)
  {
         k=i;
         for(j=i+1;j<=24;j++)
         if(*min[j]<*min[k]) k=j;
         if(k!=i)
         {
          m=min[i];min[i]=min[k];min[k]=m;
         }
  }
  k=p[0][0];p[0][0]=*min[0];*min[0]=k;
  k=p[0][4];p[0][4]=*min[1];*min[1]=k;
  k=p[4][0];p[4][0]=*min[2];*min[2]=k;
  k=p[4][4];p[4][4]=*min[3];*min[3]=k;
}
void main()
{
int i,j,(*p)[5],a[5][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25};
     p=a;
    process(p);
    for(i=0;i<=4;i++)
  {for(j=0;j<=4;j++)
  printf("%4d",a[i][j]);
  printf("\n");
  }
}
 
 
warning 全部消除了~
2011-11-06 01:24
xdh0817
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:193
专家分:195
注 册:2011-10-20
得分:0 
以下是引用khaz在2011-11-6 00:12:35的发言:

a的类型是char (*)[5],p的类型是char *
p=a会被警告
*((*p+i)+j)可以简化为p[j]方便理解。
其他不想说太多 理解第一条就不会犯那么多警告
还有一个地方:
指针不要直接赋给int 要设一个指针变量
2011-11-06 01:26



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-354384-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.292196 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved