c语⾔⾃定义带参数的函数,有参函数,C语⾔有参函数详解从形式上看,函数可分为两类:⽆参函数和有参函数。
所谓⽆参函数,是指在主调函数调⽤被调函数时,主调函数不向被调函数传递数据。⽆参函数⼀般⽤来执⾏特定的功能,可以有返回值,也可以没有返回值,但⼀般以没有返回值居多。
有参函数,是指在主调函数调⽤被调函数时,主调函数通过参数向被调函数传递数据。在⼀般情况下,有参函数在执⾏被调函数时会得到⼀个值并返回给主调函数使⽤。
有参函数是重点,我们主要介绍有参函数。
有参函数
定义有参函数的⼀般形式为:
函数类型 函数名(参数类型1 参数名1, 参数类型2 参数名2, …, 参数类型n 参数名n)
{
声明部分
语句部分
}
参数可以是⼀个,也可以是多个。下⾯给⼤家举⼀个例⼦:
# include
int main(void)
{
int Max(int x, int y); //对Max函数的声明, x、y称为形参
int a = 1, b = 2;
printf("max = %d\n", Max(a, b)); //a、b称为实参
return 0;
}
/
/定义Max函数
int Max(int x, int y)
{
int z; //函数体中的声明部分
if (x > y) //下⾯是语句部分
{
z = x;
}
else
{
z = y;
}
return (z); //返回z的值给主调函数使⽤
}
输出结果是:
max = 2
这个程序分两个部分,⼀个是主函数 main,另⼀个是⾃定义的函数 Max。Max 函数在主函数 main 的下⾯,它有两个参数,它的功能是求出 x 和 y ⼆者中的最⼤值。
形参和实参
下⾯先来讲⼀下“形参”和“实参”的概念。
在定义 Max 函数时,函数名 Max 后⾯括号中的参数 x、y 称为形式参数,简称形参。⽽在主调函数 main 中调⽤ Max 函数时,Max 函数名后⾯括号中的参数 a、b 称为实际参数,简称实参。实参可以是常量、变量或表达式,但它们必须要有确定的数值。在调⽤被调函数时将实参的值赋给形参。
在定义函数时,必须要指定形参的类型。实参与形参的个数必须相等,若不相等就是语法错误。此外,实参与形参的类型要相同或赋值兼容。最好是相同,这样不容易出错。如果不相同则实参按形参的类型转化,然后再送给形参。
在传递数据时,实参与形参是按顺序⼀⼀对应的。在 C 语⾔中,实参向形参的数据传递是“值传递”、单向传递,即只能由实参传给形参,不能由形参传回给实参。因此在执⾏被调函数时,形参的值如果发⽣改变,并不会改变主调函数中实参的值。
⽽且,在未出现函数调⽤时,形参并不占⽤内存中的存储单元。只有在发⽣函数调⽤时,函数 Max 中的形参才会被分配内存单元。调⽤结束后,形参所占的内存单元随之会被释放。
定义函数时,第⼀⾏“int Max(int x,int y)”称为函数⾸部。函数⾸部有两个数据类型,⼀个是“函数类型”,另⼀个是“参数类型”。函数名左边的类型叫“函数类型”,或“函数的返回值类型”。如果不想要返回值,那么这⾥就写 void。若使⽤ void 就不能有返回值,否则就是语法错误。需要注意的是,不能有返回值不代表不能有return语句:
return;
这也是正确的。只要 return 后⾯什么都不加就⾏,因为什么都不加也表⽰没有返回值。整个 return 语句全部都不写也可以。但是如果需要跳出被调函数的话就写上“return;”。
自定义函数怎么用c语言
函数名后⾯括号中的数据类型是所传递的参数的类型。如果不希望定义的函数接收数据,或者说不想有参数传递进来,那么这⾥就写 void 或什么都不写,⽐如 int Max(void)。这就表⽰拒绝接受数据传递,这样实参的值就传不进来了。主函数 main 的⾸部都是这么写的:
int main(void)
即不允许有值传递进来。但是,如果被调函数的参数类型定义成 void,那么主调函数在调⽤它的时候就不能有实参,否则也是语法错误。
此外,如果函数名后⾯括号中什么都不写,那么默认的也是 void。
综上所述,函数⾸部的两个数据类型是不⼀样的。⼀个函数可以有返回值,也可以没有返回值;可以接收数据,也可以不接收数据。这个就是通过这两个数据类型控制的。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。