清华大学出版社 TSINGHUA UNIVERSITY PRESS a 2 b3 2b x2 y 3 图83 图84 在调用函数时,给形参分配存储单元,并将实参对应 的值传递给形参,调用结束后,形参单元被释放, 实参单元仍保留并维持原值。因此,在执行一个被 调用函数时,形参的值如果发生改变,并不会改变 主调函数的实参的值。例如,若在执行函数过程中 x和y的值变为10和15,而a和b仍为2和3,见图84
图8.3 图8.4 在调用函数时,给形参分配存储单元,并将实参对应 的值传递给形参,调用结束后,形参单元被释放, 实参单元仍保留并维持原值。因此,在执行一个被 调用函数时,形参的值如果发生改变,并不会改变 主调函数的实参的值。例如,若在执行函数过程中 x和y的值变为10和15,而a和b仍为2和3,见图8.4
清华大学出版社 TSINGHUA UNIVERSITY PRESS 8.32函数的返回值 通常,希望通过函数调用使主调函数能得到一个确 定的值,这就是函数的返回值。例如,例8.2中, max(2,3)的值是3,max(5,2)的值是5。赋 值语句将这个函数值赋给变量c。下面对函数值作 些说明: (1)函数的返回值是通过函数中的 return语句获得的。 return语句将被调用函数中的一个确定值带回主调 函数中去。见图8.2中从 return语句返回的箭头。 如果需要从被调用函数带回一个函数值(供主调 函数使用),被调用函数中必须包含 return语句 如果不需要从被调用函数带回函数值可以不要 return语句
8.3.2 函数的返回值 通常,希望通过函数调用使主调函数能得到一个确 定的值,这就是函数的返回值。例如,例8.2中, max(2,3)的值是3,max(5,2)的值是5。赋 值语句将这个函数值赋给变量c。下面对函数值作 一些说明: (1) 函数的返回值是通过函数中的return语句获得的。 return语句将被调用函数中的一个确定值带回主调 函数中去。见图8.2中从return语句返回的箭头。 如果需要从被调用函数带回一个函数值(供主调 函数使用),被调用函数中必须包含return语句。 如果不需要从被调用函数带回函数值可以不要 return语句
清华大学出版社 TSINGHUA UNIVERSITY PRESS 个函数中可以有一个以上的 return语句,执行到 哪一个 return语句,哪一个语句起作用。 return语句后面的括弧也可以不要,如 return z; 它与“ return(z);”等价。 return后面的值可以是一个表达式。例如,例82中 的函数max可以改写如下: max (int x, int y) return (x>y? X: y); 这样的函数体更为简短,只用一个 return语句就把 求值和返回都解决了
一个函数中可以有一个以上的return语句,执行到 哪一个return语句,哪一个语句起作用。 return语句后面的括弧也可以不要,如return z; 它与“return(z);”等价。 return后面的值可以是一个表达式。例如,例8.2中 的函数max可以改写如下: max(int x,int y) { return(x>y?x∶y); } 这样的函数体更为简短,只用一个return语句就把 求值和返回都解决了
清华大学出版社 TSINGHUA UNIVERSITY PRESS (2)函数值的类型。既然函数有返回值,这个值当然 应属于某一个确定的类型,应当在定义函数时指定 函数值的类型。例如: int max( float x, float y)/函数值为整型* char letter( char cl, char c2)/函数值为字符型* double min(intx,inty)/函数值为双精度型* 读者会问:例82中的函数定义并没有说明其类型, 为什么?C语言规定,凡不加类型说明的函数, 律自动按整型处理。例8,中的max函数返回值为整 型,因此可不必说明
(2) 函数值的类型。既然函数有返回值,这个值当然 应属于某一个确定的类型,应当在定义函数时指定 函数值的类型。例如: int max(float x,float y)/* 函数值为整型 */ char letter(char c1,char c2) /* 函数值为字符型 */ double min(int x,int y) /* 函数值为双精度型 */ 读者会问:例8.2中的函数定义并没有说明其类型, 为什么?C语言规定,凡不加类型说明的函数,一 律自动按整型处理。例8.2中的max函数返回值为整 型,因此可不必说明
清华大学出版社 TSINGHUA UNIVERSITY PRESS 在定义函数时对函数值说明的类型一般应该和 return语句中的表达式类型一致。例如,例82中 用隐含方式指定max函数值为整型,而变量z也被 指定为整型,通过 return语句把z的值作为max的 函数值,由max带回主调函数。z的类型与max函 数的类型是一致的,是正确的。 (3)如果函数值的类型和 return语句中表达式的值不 致,则以函数类型为准。对数值型数据,可以 自动进行类型转换。即函数类型决定返回值的类 型。 例83返回值类型与函数类型不同。将例8.2稍作改动 (注意是变量的类型改动)
在定义函数时对函数值说明的类型一般应该和 return语句中的表达式类型一致。例如,例8.2中 用隐含方式指定max函数值为整型,而变量z也被 指定为整型,通过return语句把z的值作为max的 函数值,由max带回主调函数。z的类型与max函 数的类型是一致的,是正确的。 (3) 如果函数值的类型和return语句中表达式的值不 一致,则以函数类型为准。对数值型数据,可以 自动进行类型转换。即函数类型决定返回值的类 型。 例8.3返回值类型与函数类型不同。将例8.2稍作改动 (注意是变量的类型改动)