函数的参数与返回值
2018-03-22 18:00
281 查看
函数的参数
实参,形参,虚参,实际参数1,有参函数在调用时,主调函数和被调函数之间有数据传递,主调函数传递数据给被调函数。主调函数传递来的数据称为实际参数,简称实参。
2,定义函数时,函数名后的参数称为形式参数,简称形参。(在定义函数时,系统并不给形参分配储存单元,形参也没有具体的数值,所以称是形参,也叫做虚参)
3,实参,形参共同作用是实现数据的传送。
4,调用函数时,实参有确定的值,所以称它是实际参数,可以是变量,常量,表达式等“确定的值”
实参和形参之间的关系:
【1】实参的个数 ,类型应该和形参的个数和类型一致。调用函数时,系统给形参分配存储单元,并且把实参的数值传递给形参。
【2】实参和形参分别属于主调函数和被调函数,具有不同的内存单元。所以,在函数调用时形参发生改变,不会影响到实参。
【3】C语言中实参和形参的结合采取的是“单向值传递”方式,只有实参传递参数给形参,形参不回传参数给实参。
实参和形参的特点:
1.形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。
2.实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使实参获得确定值。
3.实参和形参在数量上,类型上,顺序上应严格一致,否则会发生类型不匹配”的错误。
4.函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。
实参的形参例子:
#include<stdio.h>
void main()/*计算两数相加*/
{
int a=5,b=4,c;
int add(int m,int n);/*对函数进行声明*/
c=add(a,b);/*函数调用*/
printf("%d",c);/*输出结果*/
getchar();
}
int add(int m,int n)
{
int sum;
sum=m+n;/*计算两数相加*/
return sum;/*返回函数值*/
}
程序说明;
程序中定义了一个“ int add(int m,int n) ”函数,函数有两个形参,定义返回类型为整型。参数是用来传递值用的。定义函数时在括号中定义的变量叫形参(形式参数),如“int add(int m,int n)”里面的“m”和“n”,在调用函数时提供给函数的变量叫实参(实际参数),如“c=add(a,b);”里的“a”和“b”,当调用函数时,程序将 a 的值传递给 m(m=a),将 b 的值传递给 n (n=b),然后运行函数add(),即将 m 和 n 两数相加并赋值给 sum 。然后返回sum 的值给 C 。
函数是用来完成一些功能的程序段,所以函数执行完之后要有所作用,要么就完成输入、输出等动作,要么就进行一些计算,所以要求它执行完之后能得到一些结果,而结果就用返回值来得到(return 语句),返回的结果的数据可能是整型,可能是字符型…这就需要你来定义(如上面的 add() 函数被我定义为整型,因为我要得到的值是整型——变量"c"为整型),这就是函数的返回类型。return 语句中的变量(sum)的类型必须和你定义的返回类型(int add(int m,int n)
)一至。
相关文章推荐
- C#多线程函数如何传参数和返回值
- C++,当函数参数或者返回值是对象......(★firecat推荐★)
- c#带参数和返回值的函数 开启线程调用的方法
- JNI实现回调| JNI调用JAVA函数|参数和返回值的格式
- C++函数参数传值OR传引用_C++函数返回值返回对象OR对象引用
- 「python」函数的参数、返回值、类型与函数嵌套
- Python开发基础-Day6-函数参数、嵌套、返回值、对象、命名空间和作用域
- 函数参数、返回值何时使用引用的问题(持续更新...)
- 函数调用中参数和返回值的拷贝
- 深度剖析函数四个部分(返回值,参数,函数名,函数体)
- 编译时推导函数调用约定、常量性、返回值、参数等函数类型特征
- 3、对变量在栈上存储顺序,及函数返回值与参数在栈上存放顺序的思考(1)
- js中函数可以作为参数和返回值
- stl算法设计理念_函数对象和函数对象当参数和返回值
- 结构体变量作为函数的参数和返回值 .
- CArray作为函数参数和返回值
- C语言入门之函数的参数和返回值
- Python学习笔记(10)-函数-函数定义、调用、参数、返回值、嵌
- 函数的参数不一定是要程序传值进去的,它也有可能不用传值,而是作为返回值,比如out
- 一个类如何实现两个接口中同名同参数不同返回值的函数