从函数的形式分,函数分为两类:
1).无参函数。在调用无参函数时,主调函数不向被调函数传递数据;无参函数,一般用来执行一种特定的操作,例如:在屏幕上输出一串符号;
2).有参函数。在调用函数时,主调函数在调用被调函数时,通过参数向被调函数传递数据,一般情况下,执行被调函数时会得到一个函数值(一般通过return函数),供主调函数使用。
函数调用时的数据传递
1.形参和实参:
在调用有参函数时,主调函数与被调函数之间有数据传递关系。在调用过程中,系统会把实参的值传递给被调函数的形参。该值在函数调用期间有效,可以参见该函数中的运算。
说明
- 实参可以是常量、变量或表达式,但是要求他们要具有确定的值,在调用时将实参的值赋给形参;
- 实参与形参的类型应相同或兼容;即在实参值传递的过程中,可以通过有效的转换将实参的类型转换成形参相同的数据类型;
函数调用过程
1).在定义函数中指定的形参,在未出现函数调用时,他们并不占用内存中的存储单元。在函数被调用时,函数中的形参被临时分配单元。
2).将实参对应的值传递给形参;
3).被调函数进行各种运算;
4).通过return语句将函数值带回到主调函数。
5)调用结束,形参单元释放。注意:实参单元仍保留并维持原值,没有改变。如果在执行一个被调函数时,形参的值发生改变,不会改变主调函数的实参值。这是由于实参与形参是两个不同的存储单元
注意
实参向形参的数据传递是“值传递”,单向传递,只能由实参传给形参,而不能由形参传给实参。实参和形参在内存中占有不同的存储单元,实参无法得到形参的值;
函数的返回值
1.函数的返回值是通过函数中的return语句获得的。return语句将被调函数中的一个确定的值带回到主调函数中去。如果需要偶从被调函数中带回一个函数值,被调函数中必须包含return语句。
return语句中的括号可以要也可以不要,如“return z;”和“return(z);”等价。return后面的值可以是一个表达式;
在定义函数时,指定的函数类型一般应该和return语句中的表达式类型一致。