2 回答
TA贡献1847条经验 获得超11个赞
形参和实参的个数没有对应上。su函数定义了两个参数,分别是int x和int i,但是在主函数调用的时候指只调用了一个x。
形参和实参的区别和联系
1、形参变量只有在函数被调用时才会分配内存,调用结束后,立刻释放内存,所以形参变量只有在函数内部有效,不能在函数外部使用。
2、实参可以是常量、变量、表达式、函数等,无论实参是何种类型的数据,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参,所以应该提前用赋值、输入等办法使实参获得确定值。
3、实参和形参在数量上、类型上、顺序上必须严格一致,否则会发生“类型不匹配”的错误。当然,如果能够进行自动类型转换,或者进行了强制类型转换,那么实参类型也可以不同于形参类型。
4、函数调用中发生的数据传递是单向的,只能把实参的值传递给形参,而不能把形参的值反向地传递给实参;换句话说,一旦完成数据的传递,实参和形参就再也没有瓜葛了,所以,在函数调用过程中,形参的值发生改变并不会影响实参。
扩展资料
函数调用的本质:
在执行调用一个函数:本质就是通过call指令调用函数在代码段的地址进行直接调用。在汇编指令可以看到当函数执行完毕,执行ret汇编指令退出函数。其实一个完整的函数调用必定包含call和ret指令。
函数分类:
1、从用户使用的角度看,函数有两种,分别为系统函数和用户自己定义的函数。系统函数又称库函数,是由编译系统提供的,用户不必自己定义这些函数,可以直接使用它们;用户自己定义的函数是用于解决用户的专门需要。
注:库函数在使用时程序中必须包含相应的头文件,如,#include《iostream》等。
2、从函数的形式看,函数又分为无参函数和有参函数。无参函数调用时不必给出参数,有参函数调用时要给出参数,在主调函数和被调函数之间有数据传递。
TA贡献1946条经验 获得超4个赞
//你的su定义函数有两个参数,但使用的时候只传递了一个x,当然too few了。
//你可以将i的定义放在su的内部,为什么用i作为参数呢??
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int su(int x)
{
if(x==0)
return 1;
else
{
int i;
for(i=2;x%i!=0 && i<=sqrt(x);i++); //这里分号。
if(i>sqrt(x))
return 1;
else
return 0;
}
}
//你的su定义函数有两个参数,但使用的时候只传递了一个x,当然too few了。
//你可以将i的定义放在su的内部,为什么用i作为参数呢??
int main()
{
int x;
scanf("%d",&x);
if (su(x)==1)
printf("y");
if (su(x)==0)
printf("n");
return 0;
}
- 2 回答
- 0 关注
- 692 浏览
添加回答
举报