c语⾔函数字符类型的返回值,C语⾔函数说明与返回值
C语⾔函数说明与返回值
导语:在C语⾔中,函数是程序的基本组成单位,因此可以很⽅便地⽤函数作为程序模块来实现C语⾔程序。下⾯就由⼩编为⼤家介绍⼀下C语⾔函数说明与返回值,欢迎⼤家阅读!
函数的⼀般形式是:type-specifier function_name(parameter list)parameter declarations{body of the function}类型说明符定义了函数中return语句返回值的类型,该返回值可以是任何有效类型。如果没有类型说明符出现,函数返回⼀个整型值。参数表是⼀个⽤逗号分隔的变量表,当函数被调⽤时这些变量接收调⽤参数的值。⼀个函数可以没有参数,这时函数表是空的。但即使没有参数,括号仍然是必须要有的。参数说明段定义了其中参数的类型。当⼀个函数没有明确说明类型时,C语⾔的编译程序⾃动将整型(int)作为这个函数的缺省类型,缺省类型适⽤于很⼤⼀部分函数。当有必要返回其它类型数据时,需要分两步处理:⾸先,必须给函数以明确的类型说明符;其次,函数类型的说明必须处于对它的⾸次调⽤之前。只有这样,C编译程序才能为返回⾮整型的值的函数⽣成正确代码。
⼀、函数的.类型说明可将函数说明为返回任何⼀种合法的C语⾔数据类型
类型说明符告诉编译程序它返回什么类型的数据。这个信息对于程序能否正确运⾏关系极⼤,因为不同
的数据有不同的长度和内部表⽰。返回⾮整型数据的函数被使⽤之前,必须把它的类型向程序的其余部分说明。若不这样做,C语⾔的编译程序就认为函数是返回整型数据的函数,调⽤点⼜在函数类型说明之前,编译程序就会对调⽤⽣成错误代码。为了防⽌上述问题的出现,必须使⽤⼀个特别的说明语句,通知编译程序这个函数返回什么值。下例⽰出了这种⽅法。
第⼀个函数的类型说明sum()函数返回浮点类型的数据。这个说明使编译程序能够对sum()的调⽤产⽣正确代码。函数类型说明语句的⼀般形式是:type_specifier function_name(;)即使函数使⽤形参,也不要将其写⼊说明句。若未使⽤类型说明语句,函数返回的数据类型可能与调⽤者所要求的不⼀致,其结果是难以预料的。如果两者同处于⼀个⽂件中,编译程序可以发现该错误并停⽌编译。如果不在同⼀个⽂件中,编译程序⽆法发现这种错误。类型检查仅在编译中进⾏,链接和运⾏时均不检查。因此,必须⼗分细⼼以确保绝不发⽣上述错误。当被说明为整型的函数返回字符时,这个字符值被转换为整数。因为C语⾔以不加说明的⽅式进⾏字符型与整型之间的数据转换,因⽽多数情况下,返回字符值的函数并不是说明为返回字符值,⽽是由函数的这种字符型向整型的缺省类型转换隐含实现的。
⼆、返回语句write的返回值
返回语句return有两个重要⽤途。第⼀,它使得内含它的那个函数⽴即退出,也就是使程序返回到调⽤语句处继续进⾏。第⼆,它可以⽤来回送⼀个数值。本章将说明这两个⽤途。
(⼀)从函数返回函数可以⽤两种⽅法停⽌运⾏并返回到调⽤程序
第⼀种是在执⾏完函数的最后⼀个语句之后,从概念上讲,是遇到了函数的结束符“}”(当然这个花括号实际上并不会出现在⽬标码中,但我们可以这样理解)。例如,下⾯的函数在屏幕上显⽰⼀个字符串。
⼀旦字串显⽰完毕,函数就没事可做了,这时它返回到被调⽤处。在实际情况中,没有多少函数是以这种缺省⽅式终⽌运⾏的。因为有时必须送回⼀个值,⼤多数函数⽤return语句终⽌运⾏,有时在函数中设⽴了多个终⽌点以简化函数、提⾼效率。切记,⼀个函数可以有多个返回语句。如下所⽰,函数在s1、s2相等时返回1,不相等时返回-1。
(⼆)返回值所有的函数
除了空值类型外,都返回⼀个数值。该数值由返回语句确定。⽆返回语句时,返回值是0。这就意味着,只要函数没有被说明为空值,它就可以⽤在任何有效的C语⾔表达式中作为操作数。这样下⾯的表达式都是合法的C语⾔表达式。
x=power(y);if(max(x,y)>100)printf(“greater;”)for(ch=get);isdigit(ch);)...;可是,函数不能作为赋值对象,下列语句是错误
的:swap(x,y)=100;C编译程序将认为这个语句是错误的,⽽且对含有这种错误语句的程序不予编译。所
有⾮空值的函数都会返回⼀个值。我们编写的程序中⼤部分函数属于三种类型。第⼀种类型是简单计算型-函数设计成对变量进⾏运算,并且返回计算值。
计算型函数实际上是⼀个“纯”函数,例如sqr()和sin()。第⼆类函数处理信息,并且返回⼀个值,仅以此表⽰处理的成功或失败。例如write(),⽤于向磁盘⽂件写信息。如果写操作成功了,write()返回写⼊的字节数,当函数返回-1时,标志写操作失败。最后⼀类函数没有明确的返回值。实际上这类函数是严格的过程型函数,不产⽣值。
如果读者⽤的是符合ANSI建议标准的C编译程序,那么所有这⼀类函数应当被说明为空值类型。奇怪的是,那些并不产⽣令⼈感兴趣的结果的函数却⽆论如何也要返回某些东西。例如printf( )返回被写字符的个数。然⽽,很难出⼀个真正检查这个返回值的程序。因此,虽然除了空值函数以外的所有函数都返回⼀个值,我们却不必⾮得去使⽤这个返回值。有关函数返回值的⼀个常见问题是:既然这个值是被返回的,我是不是必须把它赋给某个变量?回答是:不必。如果没有⽤它赋值,那它就被丢弃了。请看下⾯的程序,它使⽤了mul( )函数。mul( )函数定义为:int mul(int x, int y){......}
在第⼀⾏, mul( )的返回值被赋予z,在第⼆⾏中,返回值实际上没有赋给任何变量,但被printf( )函数所使⽤。最后,在第三⾏,返回值被丢弃不⽤,因为既没有把它赋给第⼀个变量,也没有把它⽤作表达式中的⼀部分。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论