每个c程序都至少有一个函数,即主函数 main() 对于简单任务程序而言,全部的代码都写在main()函数中 对于实际开发,程序任务复杂多样 如果全写在main()函数中,就会变得庞大臃肿,结构复杂,造成有很多不必要的重复 由此根据程序的逻辑和任务的分工把代码写到不同的自定义函数中 而业务逻辑和处理流程化分到main() 需要执行具体任务再调用自定义函数
C语言或系统提供(自带) 实现某些基本的功能,例如scanf、printf,可在程序中直接调用 需包含相对应头文件
程序员为了完成某项任务而编写的函数 实现某项功能或让主程序更简洁 使用自定义函数之前,必须先声明和定义
C语言提供了一些已声明和定义的函数 调用这些函数可以完成一些基本的功能 我们把这些函数称为C 标准函数(C standard library),简称库函数 例如printf、scanf、memset、strcpy等
提个问题:为什么复制成了完全替换,而不是仅替换对应的空间长度的内容?
首先我们得明白在arr2“hello”的结尾后面是结束标志“\0” 他仅是结束标志不作为内容,但复制的同时也将它带上了 效果就是目标空间的“hello”后有个“\0”代表结束 后面的内容不会被读出,也就相当于“完全替换”
注意:使用库函数必须包含相应的#include头文件
自定义函数和库函数都具有函数名称,返回值类型,函数参数 库函数无法干所有的事,需要程序员来发挥
如果函数的返回值是void,表示函数以完成某项功能为主,一般用单行书写,独占一条语句 返回值不是void,单行书写则不关心它的返回值,也可以当成常量用于任何表达式中
函数的参数可以理解为函数的局部变量
参数传递就是调用者程序把变量(或常量)的值复制一份给函数的参数 复制后调用者程序的变量和函数的参数就再也没有关系 所以在函数调用的过程中,函数的参数的值发生改变并不会影响调用者程序的变量的值 注:因为没有关系,形式参数与实际参数可重名
任务有改变修改实际参数的必要,进行传址 告诉函数参数的空间地址,可直接对地址指向的对象进行有效改变
这个函数具有返回值:x>y成立的话,那么就返回x,否则就返回y。
接下来我们看看里一个形式的返回最大值
为什么不行呢?
注意函数内的x,y只是形势参数,它的改变不能影响到实际参数。
这里我们是通过取地址,带入参数的地址,再解引用来改变参数内容
其实用好传值和传址调用这个精髓,对函数的使用便会简单许多