在c中任何函数都有返回值,这个是定下的,主函数也有返回值
成都创新互联公司专注于企业网络营销推广、网站重做改版、建瓯网站定制设计、自适应品牌网站建设、H5开发、商城网站开发、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为建瓯等各大城市提供网站开发制作服务。
返回值分几个方面,逐个说一下
主函数的返回值,这个一般用户用不到,程序执行的时候,系统会根据这个返回值来判断程序的运行结果
不管定义神马类型的返回值,在tc中默认为void型(这个可以省略),可以根据需要自己定义都可以。
vc中好像必须写,要不然编译系统提示出错
子函数的返回值,分两类
void,也就是在不需要子函数返回数值的时候用到。注意的是不需要不代表没有返回值。调用成功返回1,不成功返回0,我好像在哪里看到过这个说法,我不确定
非void型,这个返回值类型根据定义来返回
值得注意的是,在子函数中,只要执行return一定结束子函数,不管后面有多少代码
一些系统自带的函数,如printf,scanf等,最好了解他的返回值
①为什么需要return?
为了回答这个问题,
我打算用 模块思维 来解释。
②定义模块(形参模块)
定义函数:f(s)(a,b)
满足公式:s=a+b
函数名:f(s)
形参: a,b(公式中的 变量 )
函数返回值:return s
③调用模块(实参模块)
主函数:main()表示用户自己编写的部分
调用函数:f(s)(1,2)
满足公式:x=f(s)(1,2)
函数名:f(s)和定义函数一致,产生调用
实参 :1,2( 赋值 给公式的值)
求值:printf("%d\n",x),求x的值?
④值的传递过程
调用模块 中调用函数x=f(s)(1,2)
将实参1和2的值赋值给
定义模块 中的形参a和b
(实参到形参是单向传递,不可逆)
定义模块计算出s=a+b=1+2=3
定义模块 中的return s
将s的值赋值给
调用模块 中的函数f(s)(1,2)
即x=f(s)(1,2)=s=3
~
return s的作用
就是将定义模块中的s
赋值 给调用模块中的调用函数
如果没有return s
调用模块中的调用函数将永远没有定值
即所求x 无定值
这一点和数学不一样,
数学中
同一函数名的值是 通用 的,
C语言中
定义函数和调用函数的值是 隔离 的,
尽管函数名一样
如果不赋值,调用函数永远无定值。
你可以这么理解,比如我们定义了一个函数fun(),如果这个函数有返回值,那么在调用程序里面(比如主函数)就可以把这个函数当成一个数使用;如果没有返回值,那么通常他就是一个独立的语句存在。
比如fun函数里面有个return 0;表示返回值是零,那么在调用函数里面就可以存在诸如
a=fun();b=a+fun();if(fun()=0{};……这类的语句,表示a=0;b=a+0;if(00){};等等,当然也可能是返回一个变量的值,你个指针的值是一样的。
如果没有return 语句,那么函数没有返回值,调用函数里面就不能把他当做一个数值来使用,会出现:
fun();单独成句的语句,在fun()里面可能进行了一些操作,但不需要结果。
C语言自带的函数通常都有返回值,计算函数返回计算结果,操作函数返回操作结果(成功返回1,失败返回0)
unsigned char keyvalue;需要赋初值。如果P3!=0x7E P3!= 0X7D,那返回值就是keyvalue的初值,如果没赋值这个数是一个随机的。