函数分为库函数和自定义函数 库函数是c语言规定好 编译器去实现的 自定义函数是我们自己去设计的 语法如下
其中ret_type 是返回值类型 当没返回值时用void表示 ;当不写返回值类型时 默认为int;
对于形式参数可以为多个也可以为0个 其中为0个时形参里需写void (也可以不写void,为空值,但实参如果有值的话 那么实参会传递,不严谨,写void的话会阻止传递 更严谨) 而为0个参数时实参不需要填写参数 直接()。
return语句 其执行return语句 会直接结束该函数 (类似于break)在后面加值的话还会返回值 但return语句也可以不加上去 或者return语句后面不加值 其中当返回值和返回值类型不一样时 会把返回值给转换成相应的类型(但差别不要太大 如本来没返回值 但返回值类型是整型 要你硬创造一个返回值行不通会有bug ,但差别小的话如整型转化成浮点型这种就行。我们敲代码绝不能有这种错误 一定要准确匹配)
形参和实参的名字可以一样 对名字没有要求
对于形参和实参 如果其实参是内置型的数据类型 则实参和形参会出现以上的情况
形参和实参的地址不一样 也就是无论形参做什么 都不改变实参
其中例子如下
其中实参和形参的数组是相同的 地址相同 即使名字不同但其是一个相同的数组 。并且其形参中[]可以省略 ,(一维可以省略 二维只能省略行 不能省略列)。
嵌套调用就是函数里面用着其他函数, 一个函数里面使用着另外一个函数 。
链式访问就是将一个函数的返回值当作实际参数来用
其中橙色的是函数的定义 紫色的是函数的声明 绿色的是函数的调用
函数声明结构如下
依照我的理解 函数声明跟函数定义连接在一块 一旦编译了函数声明 就会直接扫描到跟它链接的函数定义(不管函数定义位于哪里) 知道了函数的作用 之后就可以使用函数 ;如果函数定义在函数调用前面,那么不需要函数声明作为桥梁, 直接扫描函数定义知道它使用情况 后面直接使用。
当我们代码较多时 我们就可以将其放进多个文件中去使用 这样就更方便
由于我们对上述函数的声明 定义有了些自己的初步理解 所以认为 对于声明放入头文件中 定义放入源文件中 主函数放入另一个源文件中
#include "add.h" 是相当于将头文件中的声明直接复制过来使用 从而在主函数中编译了头文件中的声明 从而直接扫描到了跟其声明连接的处于另一个源文件中的函数定义 知道了函数怎么使用 从而能在主函数中使用函数 (个人这么理解 现在学的还不够深入)