十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
你的问题的意思不明确啊。简单为你说下吧。
成都创新互联公司-云计算及IDC服务提供商,涵盖公有云、IDC机房租用、四川乐山服务器托管、等保安全、私有云建设等企业级互联网基础服务,咨询热线:18982081108
形参是定义函数时的参数,目的是用来接收调用函数时的实参值。实参是调用函数时的参数,为函数对应的形参提供明确的数值或地址。函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。
形参和实参可以相同也可以不相同,但实参和形参在数量上,类型上,顺序上应严格一致。
例如:
int
process(int
a
,double
b)
//a,b为形参,没有具体数值
{
b=a*2;
return
b;
}
int
main()
{
int
a=1
;
double
b;
process(a,b);
//a,b为实参,a具体的值由main()中定义初始化的a对应传入,b由process的函数体计算可得。
printf("%f",b);
}
形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。
应该是以形参为准
在调用函数时,编译器只知道形参类型,没法知道实参类型
应该是会将实参转换为形参的类型
你的参数传递的不对,max和min已经是指针了,在加上*号就不是指针了。调用fun函数的时候直接传max和min就行,不用带*号。使用符号传递时虽然满足了类型的要求,但是实际是对指针再次取地址了,参数内容也不对。
编译器在编译时默认会做类型检查,发现行参与实参类型不一致时会提示编译警告,如果确认赋值调用不存在赋值不兼容,且不会发生溢值现象,可以使用强制类型转换,跳开编译警告。此外,可以也在编译选项中取消类型检查。
在main函数之前做函数申明一定没错。在main函数之前添加这一句float m(int x,float y)
还有,你说的int x,float y这两个参数类型不一样,这是完全允许的;实参在向形参传递参数的时候:实参会按照形参的类型进行转换。
VC6吗?Rebuild或者关闭VC6重新打开项目,然后Rebuild一下看看。
VC6经常出现这种现象,因为缓存的问题,导致调试时提示不正确,实际上程序是对的。
如果是VC6,还有个办法,关闭工程,删除*.ncb文件,重启项目,重新编译,基本就OK。