啊哈磊_编程从这里起步
标题:
这个代码有什么问题?
[打印本页]
作者:
盲聋不哑
时间:
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)
下载附件
保存到相册
2013-6-19 16:34 上传
可以编译,无法运行
作者:
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