C语言程序设计(第4章函数)

C语言程序设计(第4章函数),第1张

C语言程序设计(第4章函数),第2张

4.1函数描述和返回值
当没有指定函数的类型时,C语言的编译器自动将integer (i n t)作为该函数的默认类型,默认类型适用于大量的函数。当需要返回其他类型的数据时,需要分两步处理:
首先,必须给函数一个显式的类型描述符;
其次,函数类型的描述必须在第一次调用它之前。只有这样,C编译器才能为返回非整数值的函数生成正确的代码。

4.1.1函数的类型描述
可以将函数描述为返回任何合法的C语言数据类型。
类型说明符告诉编译器它返回什么类型的数据。这些信息对于程序的正确运行非常重要,因为不同的数据有不同的长度和内部表示。
在使用返回非整数数据的函数之前,必须向程序的其余部分解释其类型。如果不这样做,C语言的编译器会认为该函数是返回整数数据的函数,调用点会在函数类型描述之前,编译器会为调用生成一个错误代码。为了防止上述问题,必须使用特殊的解释性声明。
[例4-1]
float sum();/*函数描述*/
main()
{
float first,s e c o n d;
first = 123.23;
秒= 99.09;
printf ("%f ",sum (first,s e c o n d));
}

Float sum (a,b)/*函数定义*/
float a,b;
{
return a+b;
}

第一个函数的类型描述sum()函数返回浮点数据。这种描述使编译器能够为sum()的调用生成正确的代码。
函数类型语句的一般形式是:
type _ specifier function _ name();
即使函数使用了形参,也不要写在说明句里。如果不使用type语句,函数返回的数据类型可能与调用者的要求不一致,结果不可预测。如果两者都在同一个文件中,编译器可以找到错误并停止编译。如果它不在同一个文件中,编译器就不会发现这个错误。类型检查只在编译期间进行,链接和运行时检查都不进行。因此,必须非常小心,以确保上述错误永远不会发生。当描述为整数的函数返回字符时,字符值被转换为整数。因为C语言在字符型和整型之间转换数据是不需要解释的,所以大多数情况下,返回字符值的函数并不解释为返回字符值,而是通过默认的字符型到整型的类型转换来隐式实现。

4.1.2退货单
退货单退货有两个重要目的。首先,它使包含它的函数立即退出,即它使程序返回调用语句继续。其次,它可以用来返回一个数值。本章将解释这两个目的。
1。从函数返回
函数可以通过两种方式停止运行并返回到调用程序。第一种是在执行完函数的最后一条语句后,从概念上讲,遇到了函数的终止符“}”(当然,这个花括号实际上并没有出现在目标代码中,但我们可以这样理解)。例如,下面的函数在屏幕上显示一个字符串。

[例4-2]
pr _ reverse()
{
char s[80];/*定义一个字符数组*/
scanf("%s ",s);/*输入长度不超过7或9个字符的字符串*/
printf("%s\n ",s);
}
字符串一旦显示,函数就什么都不做了,然后返回被调用的地方。
实际上,以这种默认方式终止的函数并不多。因为有时必须返回一个值,所以大多数函数都是用return语句终止的,有时在函数中设置多个终止点,以简化函数,提高效率。记住,一个函数可以有多个return语句。如下所示,当s 1和s2相等时,函数返回1,当它们不相等时,返回-1。

【例4-3】
find _ char(S2 S1)
char S2 S1;
{
if(S1 = = S2)
return 1;
else
return-1;
}
2。返回值
除了空值类型之外,所有函数都返回一个数值(记住空值是A N S I建议标准的扩展,可能不适合读者手头的C编译器)。该值由return语句确定。当没有返回任何语句时,返回值为0。这意味着只要函数没有被指定为空值,它就可以在任何有效的C语言表达式中用作操作数。以下表达式都是合法的C语言表达式。
x =幂(y);
if(max (x,y)> 100)printf(" greater ");

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C语言程序设计(第4章函数)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情