啊哈磊_编程从这里起步

标题: 这个代码有什么问题? [打印本页]

作者: 盲聋不哑    时间: 2013-6-19 16:34
标题: 这个代码有什么问题?
#include <stdio.h>
#include <stdlib.h>
int *GetMax(int score[],int n);
int main()
{int i,score[10],*p;
for(i=0;i<10;i++) scanf("%d",score+i);
p=GetMax(score,10);
printf("Max:%d\n",*p);system("pause");
return 0;
}
int *GetMax(int score[],int n)
{ int i,pos=0;
  for(i=1;i<10;i++)
    if(score[i]>score[pos])pos=i;
  return pos;
}

QQ图片20130618221515.jpg (29.87 KB, 下载次数: 4)

可以编译,无法运行

可以编译,无法运行

作者: rosynirvana    时间: 2013-6-19 16:34
你的GetMax返回一个int*
但是实际返回的是pos,一个int
然后强制转换后访问了非法的地址

不应该返回一个局部变量的地址,所以应该把函数声明改成
int getMax(int score[], int n);

然后p的类型也要改
GetMax里面有个设计问题,传进去的n没有使用,而是硬编码了一个10进去




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2