你这样理解是错误的,教材上是指调用函数时传递的参数数目应该相同!当你多次调用函数也是分开多次把实参传递给函数的,所以书上写的也是对的!
但是形参也不一定和实参个数是相同的,例如在C++可以这样定义函数
int max(int x,int y=1)
{int z;
z=x>y?x:y;
return(z);
}
可以这样调用函数
max(2);或者max(2,3);
认真看书,提出疑问是对的!多累积,C++编程可以成为一门艺术!当你理解了这句话的时候就能成为高手了!
以下为个人见解,长时间不接触编程,可能不是很准确!
调用函数的时候,程序将实参的值赋值给形参,从而使得函数中的数据处理能够进行,如果实参个数和形参不等,则会导致数据无法传递,形参的值不能确定,从而函数无法正常运行!
所谓的形参和实参个数相同是指每次调用的时候,实参的个数和形参是相同的!而不是从整个程序中来看!
对于函数来说,一般在程序运行的开始时不分配空间的,只是放在函数的堆栈中,等调用的时候再具体分配内存空间,运行结束内存立即释放。因此,对于c=max(a,b)来说,运行时创建形参x.y的存储单元,运行完成将值赋值给c后,函数内存空间消除,同理d=max(e,f)运行时,创建新的存储单元x.y并将e.f的值传入,运行后将结果赋值给d,函数空间释放!从每次调用来看,函数里面的实参都是两个,不违背形参同实参个数相等的约定!
楼主没有理解“形参和实参的类型应相同,个数相同”!
类型应相同这个不用说了吧
当一个变量被函数调用的时候才能称作实参,而不是说一个变量在被某个函数调用过之后永远都是那个函数的参数
打个比方:假如一个学生是班长,当第二年重新选举时落选了,这时班长就是另一个人,而他也就不再是班长了
所说参数的个数是指在函数调用里的参数个数,如上max()的实参是两个,形参也是两个
其实“形参和实参的类型应相同,个数相同”这句话只是在C语言里成立,在C++里不能这么说,因为C++可以使用默认参数,即实参个数可以少于形参个数
同学 你理解错误了 形式参数不论在数量还是类型上都应该与其对应的实际参数相匹配! 你上面举得那个列子同样也是遵循了这个原理的,你只是在理解的时候出了点小错。 所谓数量一样 是指函数在被调用的“一次”过程中(重点是被调用一次),其实参、形参数量一样,而不是你上面所说的 一个函数被调用了两次之后,再加在一起来匹配对比的!
你这样理解就错了,这里说的是在一次调用过程中,比如还是你那个函数,这样调用就不对了:m=max(a,b,e);
这是所谓的形参与实参个数不同。
你上面说的,那是一个函数被调用了两次,但它每次都是遵守规则的。
不知道明白了没有?