c语言函数(实参传值、函数调用、链式访问、函数递归)的使用方法、规范、细节。

本文深入探讨了函数的分类,包括库函数和自定义函数,并详细解析了函数参数的实参和形参概念。自定义函数的格式、调用规则以及传值与传址调用方式被逐一阐述。此外,还强调了函数设计的原则,如单一职责原则,并警告了栈溢出可能在递归中发生的问题。最后,提到了链式访问和递归在解决复杂问题中的应用。
摘要由CSDN通过智能技术生成

函数分为:

1.库函数

2.自定义函数

函数的实参和形参:

实参:实参可以是常量、变量、表达式、函数等,只要能算出一个确定的值,就可以传给形参计算。

形参:形参的生命周期在函数被调用到调用结束之间,形参只在函数内生效。形参实例化后其实相当于实参的一份临时拷贝。

自定义函数格式:

使用自定义函数时,先写出函数的调用,再创造函数。

void返回类型函数:如果函数不返回任何一个变量时使用。

ret_type fun_name(paral,*)

{

   statement;

}

ret_type函数的返回类型

fun_name函数名

paral,*函数参数

statement函数体

函数的调用:

函数的声明放在头文件中;定义放在源文件中。

函数在声明后可以写在主函数之后,但是如果没有声明直接调用定义在主函数之后的函数,会报错。如果函数在主函数之前,就不用声明,可以直接调用

①传值调用:函数的实参和形参分别占有不同的内存块,对形参的修改不会影响实参。

②传址调用:这种传参方式可以让函数和函数的外部变量建立起真正的联系,也就是函数内部可以直接操作函数外部的变量,同时也可以减少堆栈。

函数的部分规范:

①设计函数时尽量只使其完成单一的功能。

②函数中,只要上一步返回,之后的语句就不再执行。

③自定义函数如果不规定返回类型,则默认返回类型为int。

④不能在函数体中求数组的长度:函数中使用“实参”给“形参”传递数组时,要在形参的数组名后加方括号表示这是数组类型的形参,且传递时传给形参的仅为数组的第一个元素的地址,因此如果此时求传过来的数组的大小,仅仅为指针的大小“4”。故不能够在主函数创建数组后在函数中求数组的大小。

⑤在一个函数中不能定义另一个函数,但是可以调用。

链式访问:将一个函数的返回值作为另一个函数的参数。

例:int len =strlen(abc);

printf(%d\n,len);

化为:printf(%d\n,strlen(“”abc));

函数的递归:把一个大型复杂的问题层层转化为一个与原问题相似规模的小的问题来求解。

使用递归时会出现栈溢出的问题stack overflow:

每一次递归会在栈区使用一块区域,而栈区的空间有限,如果栈区被全部充满就无法继续为新的递归赋予空间,就会报错。所以在调用递归函数时:①不能写死递归,要设置跳出递归的条件,每次递归都要逼近跳出条件。②递归的层次不能过深。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

S+叮当猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值