搜索
查看: 1578|回复: 1
打印 上一主题 下一主题

这个代码有什么问题?

[复制链接]
跳转到指定楼层
楼主
发表于 2013-6-19 16:34:47 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
#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)

可以编译,无法运行

可以编译,无法运行

最佳答案

查看完整内容

你的GetMax返回一个int* 但是实际返回的是pos,一个int 然后强制转换后访问了非法的地址 不应该返回一个局部变量的地址,所以应该把函数声明改成 int getMax(int score[], int n); 然后p的类型也要改 GetMax里面有个设计问题,传进去的n没有使用,而是硬编码了一个10进去
沙发
发表于 2013-6-19 16:34:48 | 只看该作者
你的GetMax返回一个int*
但是实际返回的是pos,一个int
然后强制转换后访问了非法的地址

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

然后p的类型也要改
GetMax里面有个设计问题,传进去的n没有使用,而是硬编码了一个10进去
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表