C/C++高手进来噻。。问题请教~~

来源:百度知道 编辑:UC知道 时间:2024/06/05 01:36:37
#include<stdio.h>
#define M 3
#define N 2
int main()
{
int *max(int m,int n,int *p4);
int b[M][N],i,j;
int *p3,*p4;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%d",&b[i][j]);
p4=*b;
p3=max(M,N,p4);
printf("max is %d",*p3);
printf(" Col is %d",*(p3+1)+1);
printf(" Row is %d",*(p3+2)+1);
return 0;
}
int *max(int m,int n,int *p4)
{
int *p,*p2,maxn,i,j;
p2=p4;
maxn=*p2;
for(i=0;i<=m-1;i++)
for(j=0;j<=n-1;j++)
if(maxn<=*(p2+i*n+j))
{
maxn=*(p2+i*n+j);
*p=maxn;
*(p+1)=i;
*(p+2)=j;
}
return(p);
}

C代码是求一个m*n数组中最大值和定位最大值的程序。。学校机房TC环境下编译通过并正常使用来着。。但是用VS2008和Dev C++编译。。倒

指针P没有初始化,你将它的解引用赋值是不可预知的,因为P很有可能指向不可访问的地址

#include<stdio.h>
#define M 3
#define N 2
int main()
{
int *max(int m,int n,int *p4);
int b[M][N],i,j;
int *p3,*p4;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%d",&b[i][j]);
p4=*b;
p3=max(M,N,p4);
printf("max is %d",*p3);
printf(" Col is %d",*(p3+1)+1);
printf(" Row is %d",*(p3+2)+1);
return 0;
}
int *max(int m,int n,int *p4)
{
int *p = new int,*p2,maxn,i,j;
p2=p4;
maxn=*p2;
for(i=0;i<=m-1;i++)
for(j=0;j<=n-1;j++)
if(maxn<=*(p2+i*n+j))
{
maxn=*(p2+i*n+j);
*p=maxn;
*(p+1)=i;
*(p+2)=j;
}
return(p);
}

#include<stdio.h>
#define M 3
#define N 2

int max(int& row,int& col,int (*pa)[N])
{