C语言中的函数:return 语句、数组做函数参数、嵌套调用和链式访问、函数的声明和定义

目录

一、return 语句

二、数组做函数参数

 三、嵌套调用和链式访问

3.1嵌套调用

3.2链式访问

四、函数的声明和定义

4.1单个文件

4.2多个文件


一、return 语句

在函数的设计中,函数中经常会出现return语句,这⾥讲⼀下return语句使⽤的注意事项。

  •  return后边可以是⼀个数值,也可以是⼀个表达式,如果是表达式则先执⾏表达式,再返回表达式 的结果。
  •  return后边也可以什么都没有,直接写 return; 这种写法适合函数返回类型是void的情况。
  •  return返回的值和函数返回类型不⼀致,系统会⾃动将返回的值隐式转换为函数的返回类型。
  •  return语句执⾏后,函数就彻底返回,后边的代码不再执⾏。
  •  如果函数中存在if等分⽀的语句,则要保证每种情况下都有return返回,否则会出现编译错误。

二、数组做函数参数

在使用函数解决问题时,难免会将数组作为参数传递给函数,在函数内部对数组进行操作。比如:写一个函数对将一个整型数组的内容,全部置为-1,再写一个函数打印数组的内容。思考过后,基本形式应该是这样的:

 我们写出来了这两个函数,那么,这两个函数要怎么设计呢?

这里,我们要知道数组传参的几个重要知识:

  • 函数的形式参数要和函数的实参个数匹配
  • 函数的实参是数组,形参也是可以写成数组形式的
  • 形参如果是⼀维数组,数组⼤⼩可以省略不写
  • 形参如果是⼆维数组,⾏可以省略,但是列不能省略
  • 数组传参,形参是不会创建新的数组的
  • 形参操作的数组和实参的数组是同⼀个数组

根据上述的信息,我们就可以实现这两个函数:

 打印一下看看吧,你会发现报错了,把定义的函数放到main函数前面试试

 发现可以了呀,这是为什么呢?我们后面会讲到

 三、嵌套调用和链式访问

3.1嵌套调用

嵌套调用就是函数之间的互相调用,每一个函数就相当于一个乐高零件,正是因为多个乐高的零件无缝配合才能拼出精美的乐高玩具呀,也正是因为函数之间有效的相互调用,最后写出来精美的程序。

比如,我们计算某年某月有多少天?要实现这个程序,我们可以设计两个函数

  • is_or_not_year:确定是不是闰年
  • get_days_month:根据月份确定天数

因此,我们就可以设计两个函数,从而写出这个程序了

 输入2004 2 看看对不对吧

结果是正确的。这个程序就完成了 。

3.2链式访问

所谓链式访问就是将一个函数的返回值作为另外一个函数的参数,像链条一样将函数串起来就是函数的链式访问。

看下面的例子:

 前面的strlen求了字符串abcdef的长度,如果把strlen的返回值直接作为printf函数的参数,这就是一个链式访问的例子。

看一下下面这个代码,下面这个代码执行结果是啥呢?

 想知道这个结果,关键要明白printf函数返回的是啥?其实呀,printf函数返回的是打印在屏幕上的字符的个数,也就是说,打印43,返回的值就是2。因此,对于上面的程序,第⼀个printf打印的是第⼆个printf的返回值,第⼆个printf打印的是第三个 printf的返回值。第三个printf打印43,在屏幕上打印2个字符,再返回2; 第⼆个printf打印2,在屏幕上打印1个字符,再放回1; 第⼀个printf打印1,所以最后屏幕上打印的是4321。

四、函数的声明和定义

4.1单个文件

 一般我们使用函数的时候,直接将函数写出来就使用了。还是那个写闰年的程序

 上述代码中,这个是函数的定义。

 而这个是函数的调用。

这种场景下是函数的定义在函数调用之前,没啥问题,如果函数的定义放在函数的调用后面,我们编译 ,就会出现警告。

 就是C语言编译器对源代码编译时,遇到上述函数时,没有发现他们的定义,于是就报出了警告。怎么解决问题呢?在函数调用之前先声明一下函数就可以了,声明函数只需要交代清楚:函数名,函数的返回类型和函数的参数。

这样代码就能正常编译了。因此,前面所说的问题就是函数先使用但是没声明了。函数的调用一定要先声明 后定义。函数的定义也是一种特殊的声明,所以如果函数定义放在调用之前也是可以的。

4.2多个文件

一般在企业中写代码时,代码可能比较多,不会将所有代码都放在一个文件中;我们往往会根据程序的功能,将代码拆分放在多个文件中。

一边情况下,函数的声明、类型的声明放在头文件(.h)中,函数的实现放在源文件(.c)中。

头文件

 源文件

 在使用时,只需要加上对应的头文件 #include "fuxi.h" 就能运行了。

这就是今天要分享的内容啦。最美的不是下雨天,是曾与你躲过雨的屋檐。

 

  • 14
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值