新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
函数定义时的参数为:形参
创新互联主营通海网站建设的网络公司,主营网站建设方案,app软件开发,通海h5成都小程序开发搭建,通海网站营销推广欢迎通海等地区企业咨询
函数调用语句中的参数称为:实参
实现函数时,如果有参数,则要写明参数:
int plus(int a,int b)
{
return (a+b);
}
void fun(void)
{
}
但要注意,此时的参数名是“形参”,名字可以随便起,与调用时不必一样,但类型要一样!个数也应该相同。还有各个类型的排列顺序也要一致!例如声明时:int function(float,double);则实现时double类型也要在float类型之后:int function(float f,double d){}
函数实参:
函数作为另一个函数调用的实际参数出现。这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须是有返回值的。例如: printf("%d",max(x,y)); 即是把max调用的返回值又作为printf函数的实参来使用的。在函数调用中还应该注意的一个问题是求值顺序的问题。所谓求值顺序是指对实参表中各量是自左至右使用呢,还是自右至左使用。
以上内容参考:百度百科-函数调用
函数的参数分为形参和实参两种。
形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。实参出现在主调函数中,进入被调函数后,实参变量也不能使用。
形参和实参的功能是作数据传送,发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。
举个例子:
定义一个函数s=f(a,b),功能是将a和b的差赋值给s,那么,a和b就是这个函数的两个参数。
扩展资料:
C语言的参数传递方式
方法有3种方式:值传递、地址传递、引用传递
tips:
被调用函数的形参只有函数被调用时才会临时分配存储单元,一旦调用结束占用的内存便会被释放
值传递和地址传递,传递的都是实参的一个拷贝
C语言中实参和形参之间的数据传递是单向的“值传递”,单向传递,只能由实参传给形参,反之不行
输出格式并没有选择%p而是选择了%d,因为十进制的数看起来更直观。
值传递
如果只是传递值的话:
#include stdio.h
//值传递传值
void swap( int x, int y);
int main()
{
int a=2,b=3;
printf("before:实参为a,b\na=%d,地址为%d\nb=%d,地址为%d\n\n",a,a,b,b);
swap(a,b);
printf("after:实参为a,b\na=%d,地址为%d\nb=%d,地址为%d\n\n",a,a,b,b);
return 0;
}
void swap(int x,int y)
{
int tmp;
tmp=x;
x=y;
y=tmp;
printf("inside:形参为x,y\nx=%d,地址为%d\ny=%d,地址为%d\n\n",x,x,y,y);
}
形式参数和实际参数的功能是传递数据。
当函数调用发生时,实际参数的值被传递给形式参数。
形式参数变量仅在调用函数时分配内存。
函数分有参数函数和无参数函数,函数参数当然只有参数的函数。函数参数就是我们写函数名称后圆括号内的常量值、变量、表达式或函数。当我们定义函数时,这是的参数有称为形式参数,形式参数不能是常量值。当我们引用或调用该函数时,这是的参数有称为实际参数(实参)。形式参数的类型说明可在函数体{}与紧跟在函数名之后的()之间,也可在()之内,目前流行的风格应是在括号内。这是一种风格问题,可以依照个人习惯。在函数调用时,大多数的情况下,主函数和被调用的函数之间有数据传递关系,在传递数据时情况较复杂,但记住一点就是参数类型必须匹配,数量一般也相等(除在某些库函数用省时后续参数),集中较复杂的情况说明如下:1,强制类型转换。这些类型转换必须是c语言中可进行的。如形参说明为int,而实参为float型,那么在实际处理时按float型处理。2,数据类型转换。包括字符串,在调用函数时传递实参变量数组的目前地址,或字符串的首指针。3,在以函数或表达式做参数时,实参形式的表达式或函数必须有确定的与形参类型匹配的值,另外还应注意,c中规定,时参变量对形参变量的数据传递都是在局部的情况下单向传递的,只能是参传递给形参,而不能把形参传递给实参,但是如果实参变量和形参变量都是全局变量时就不同了,这时形参的改变会影响实参的改变,这在某些场合中是一种非常有用的方法。比如我们编写两个矩阵相乘的函数,两个实参形式的矩阵相乘函数调用一个函数时,相乘的结果(两矩阵相乘)要返回到调用函数,这是用全局变量就是一种折中的方法,但最好的方法还是采用函数参数直接返回的方法,下面是用全局变量的方法实现的数组之间的乘法,用来说明参数的传递。
C源程序是由函数组成的。 虽然在前面各章的程序中都只有一个主函数main(), 但实用程序往往由多个函数组成。函数是C源程序的基本模块, 通过对函数模块的调用实现特定的功能。C语言中的函数相当于其它高级语言的子程序。C语言不仅提供了极为丰富的库函数(如Turbo C,MS C 都提供了三百多个库函数),还允许用户建立自己定义的函数。用户可把自己的算法编成一个个相对独立的函数模块,然后用调用的方法来使用函数。可以说C程序的全部工作都是由各式各样的函数完成的, 所以也把C语言称为函数式语言。由于采用了函数模块式的结构, C语言易于实现结构化程序设计。使程序的层次结构清晰,便于程序的编写、阅读、调试。
例如:你自己定义一个函数
int
max(int
a,int
b){...
}
在这里a,b就是形参,接下来你会调用max函数,如:
void
main()
{
int
c,int
d;
.....
max(c,d);
}
这里c
d就是实参
所谓形参就是在函数定义体中的参数
所谓实参就是在调用函数时实际传进函数的参数
形式参数就是定义函数时候的参数表,只是定义了调用时参数的个数、类型和用来引用的名字,并没有具体的内容。形参未被调用时,不占存储单元。形参只在调用过程中占用存储单元。
在调用函数时,给形参分配存储单元,实参可以是常量、变量或者表达式,且要与形参类型一致!而且实参要有确定的值,在调用过程中实参将值赋给形参,并将实际参数对应的数值传递给形式参数;
调用结束后,形参单元被释放,实参单元仍然保留
并且维持原值。所以说,实参是调用函数传递的具体数据。实参对形参数据传递时时单向传递。在存储单元中是不同的单元。
下面这段程序中
#includestdio.h
int
fun(int
a,int
b)
{a+=10;
b=a+b*2;
return
a+b;
}
void
main()
{
int
x=3,y=5,z;
z=fun(x,y);
printf("%d
%d
%d\n",x,y,z);
}
a和b都是形式参数,x和y都是实际参数。
程序从主函数开始运行,等到运行到z=fun(x,y)开始调用被调用函数,以被调用函数的形式进行运算,然后把计算的值返回后赋值给z,这样一个运算就算完成了。在调用过程中,形参a和b的值都发生了改变,但是在main函数中,x和y的值都未发生变化。所以说实参向形参的值的传递是单向的。