zl程序教程

您现在的位置是:首页 >  后端

当前栏目

如何深入掌握C语言函数

C语言 如何 函数 深入 掌握
2023-09-27 14:22:51 时间

函数基本概念

 

每个c程序都至少有一个函数,即主函数 main() 
对于简单任务程序而言,全部的代码都写在main()函数中
对于实际开发,程序任务复杂多样
如果全写在main()函数中,就会变得庞大臃肿,结构复杂,造成有很多不必要的重复
由此根据程序的逻辑和任务的分工把代码写到不同的自定义函数中
而业务逻辑和处理流程化分到main()
需要执行具体任务再调用自定义函数

函数类型对比

库函数

C语言或系统提供(自带)
实现某些基本的功能,例如scanf、printf,可在程序中直接调用
需包含相对应头文件

自定义函数

程序员为了完成某项任务而编写的函数
实现某项功能或让主程序更简洁
使用自定义函数之前,必须先声明和定义

库函数

C语言提供了一些已声明和定义的函数
调用这些函数可以完成一些基本的功能
我们把这些函数称为C 标准函数(C standard library),简称库函数
例如printf、scanf、memset、strcpy等

栗子

strcpy(复制)

 

提个问题:为什么复制成了完全替换,而不是仅替换对应的空间长度的内容?

首先我们得明白在arr2“hello”的结尾后面是结束标志“\0”
他仅是结束标志不作为内容,但复制的同时也将它带上了 
效果就是目标空间的“hello”后有个“\0”代表结束
后面的内容不会被读出,也就相当于“完全替换”

 memset(内容指定)

注意:使用库函数必须包含相应的#include头文件 

自定义函数

自定义函数和库函数都具有函数名称,返回值类型,函数参数
库函数无法干所有的事,需要程序员来发挥

调用

如果函数的返回值是void,表示函数以完成某项功能为主,一般用单行书写,独占一条语句
返回值不是void,单行书写则不关心它的返回值,也可以当成常量用于任何表达式中

参数的传递

函数的参数可以理解为函数的局部变量

传值

参数传递就是调用者程序把变量(或常量)的值复制一份给函数的参数
复制后调用者程序的变量和函数的参数就再也没有关系
所以在函数调用的过程中,函数的参数的值发生改变并不会影响调用者程序的变量的值
注:因为没有关系,形式参数与实际参数可重名

传址

任务有改变修改实际参数的必要,进行传址
告诉函数参数的空间地址,可直接对地址指向的对象进行有效改变

栗子

返回最大值函数

这个函数具有返回值:x>y成立的话,那么就返回x,否则就返回y。

接下来我们看看里一个形式的返回最大值

为什么不行呢?

注意函数内的x,y只是形势参数,它的改变不能影响到实际参数。

解决方案

 

这里我们是通过取地址,带入参数的地址,再解引用来改变参数内容

局别

 其实用好传值和传址调用这个精髓,对函数的使用便会简单许多