有时候,我们定义的函数需要接收用户传入的数据,那么就需要使用到函数的参数。
函数参数的数量可以有多个,
返回值一般表示函数计算后的数值,也可以表示执行结果。
主函数传入的参数称为实参,传递到函数体的参数叫做形参。
传递到形参后就可以直接在函数体当中使用已经定义过的形参的数据。
函数的设计应该遵从一个函数实现一个功能的原则,
传入的参数让函数实现更为丰富的功能。
类型名就是指定函数的返回值,一个函数实现一个功能通常是要反馈结果的,若函数确实不需要返回值,可以使用void来定义。
函数定义时写的参数就是形参,形式参数,定义时仅仅是一个占位符,没有实际数值,在主函数执行函数时传递的具体的数值就是实际参数。
实参和形参的功能就是用于数据传输。当函数发生调用的时候,实参的值会传递给形参。并且传递是具有单向性的。当函数执行党的时候形参才会生成具体的空间,才会分配内存,当函数结束之后就会立即释放内存。所以形参的变量只有在函数的内部有效,出了函数他什么也不是。
传值和传址
指针也是一个变量,所以可以通过参数(将指针的存值)传递给函数。引进指针的参数有什么意义呢?
因为作用域的存在,不同的函数是无法直接去访问对方的变量的,所以形参和实参重名也并不冲突。
当通过传递变量实现对一个变量的更改并打印的话,在函数中更改的仅仅是形参,对在main函数的数据没有影响。
而函数中指针的使用呢就是拿到实参变量的地址,直接对所在的地址的数据进行修改。
这是传值和传址的根本区别。
传递数组
在主函数中定义的数组,进行实参与形参的传值时,函数调用处的实参直接书写数组名就可以了。实际上不是传输的整个数组的每个值,并不存在将整个数组作为参数传递的形式,而是将数组的第一个元素的地址进行了传递,所以,在函数中对数组元素进行的修改会将主函数中定义的数组的元素一并修改。