函数是一组一起执行任务的语句.每个C ++程序至少有一个函数,即 main(),所有最简单的程序都可以定义其他函数.
你可以分割你的代码分成不同的功能.你如何在不同的函数之间划分代码取决于你,但从逻辑上讲,除法通常是每个函数执行特定的任务.
函数声明告诉编译器函数的名称,返回类型和参数.函数定义提供函数的实际主体.
C ++标准库提供了程序可以调用的许多内置函数.例如,函数 strcat()连接两个字符串,函数 memcpy()将一个内存位置复制到另一个位置以及更多函数.
一个函数已知有各种名称,如方法或子程序或程序等.
定义函数
C ++函数定义的一般形式如下 :
return_type function_name( parameter list ) { body of the function}
C ++函数定义由函数头和函数体组成.以下是函数的所有部分 :
返回类型 : 函数可以返回值. return_type 是函数返回的值的数据类型.某些函数执行所需的操作而不返回值.在这种情况下,return_type是关键字 void .
功能名称 : 这是函数的实际名称.函数名称和参数列表一起构成函数签名.
参数 : 参数就像一个占位符.调用函数时,将值传递给参数.该值称为实际参数或参数.参数列表是指函数参数的类型,顺序和数量.参数是可选的;也就是说,函数可能不包含任何参数.
函数体 : 函数体包含一组语句,用于定义函数的功能.
示例
以下是名为 max()的函数的源代码.此函数接受两个参数num1和num2并返回两者中最大的 :
// function returning the max between two numbers int max(int num1, int num2) { // local variable declaration int result; if (num1 > num2) result = num1; else result = num2; return result; }
函数声明
函数声明告诉编译器函数名称以及如何调用函数.函数的实际主体可以单独定义.
函数声明包含以下部分;
return_type function_name( parameter list );
对于上面定义的函数max(),以下是函数声明 :
int max(int num1,int num2);
参数名称在函数声明中并不重要,只需要它们的类型,因此以下也是有效声明 :
int max(int,int);
在一个源文件中定义函数并在另一个文件中调用该函数时,需要函数声明.在这种情况下,您应该在调用函数的文件顶部声明函数.
调用函数
创建C ++函数时,你给出了函数必须做的定义.要使用函数,您必须调用或调用该函数.
当程序调用函数时,程序控制将转移到被调用函数.被调用函数执行已定义的任务,当执行返回语句或达到其函数结束右括号时,它会将程序控制返回给主程序.
要调用函数,您只需要传递所需的参数以及函数名称,如果函数返回一个值,那么您可以存储返回的值.例如 :
#includeusing namespace std; // function declarationint max(int num1, int num2); int main () { // local variable declaration: int a = 100; int b = 200; int ret; // calling a function to get max value. ret = max(a, b); cout << "Max value is : " << ret << endl; return 0;} // function returning the max between two numbersint max(int num1, int num2) { // local variable declaration int result; if (num1 > num2) result = num1; else result = num2; return result; }
我保持max()函数和main()函数并编译源代码.在运行最终可执行文件时,它会产生以下结果 :
Max value is : 200
函数参数
如果函数要使用参数,它必须声明接受参数值的变量.这些变量称为函数的形式参数.
形式参数的行为与函数内部的其他局部变量相似,并在进入函数时被创建并被销毁在退出时.
在调用函数时,有两种方法可以将参数传递给函数 :
Sr.No | 呼叫类型&说明 |
---|---|
1 | 按值调用 此方法将参数的实际值复制到形式参数中功能.在这种情况下,对函数内部参数所做的更改对参数没有影响. |
2 | 通过指针调用 此方法将参数的地址复制到形参中.在函数内部,该地址用于访问调用中使用的实际参数.这意味着对参数所做的更改会影响参数. |
3 | Call by Reference 此方法将参数的引用复制到形式参数中.在函数内部,引用用于访问调用中使用的实际参数.这意味着对参数所做的更改会影响参数. |
默认情况下,C ++使用按值调用传递参数.通常,这意味着函数中的代码不能改变用于调用函数的参数和上面提到的示例,而调用max()函数时使用相同的方法.
参数的默认值
定义函数时,可以为每个最后一个参数指定默认值.如果在调用函数时相应的参数保留为空,则将使用此值.
这是通过使用赋值运算符并为函数定义中的参数赋值来完成的.如果在调用函数时未传递该参数的值,则使用默认的给定值,但如果指定了值,则忽略此默认值,而是使用传递的值.请考虑以下示例 :
#includeusing namespace std; int sum(int a, int b = 20) { int result; result = a + b; return (result);}int main () { // local variable declaration: int a = 100; int b = 200; int result; // calling a function to add the values. result = sum(a, b); cout << "Total value is :" << result << endl; // calling a function again as follows. result = sum(a); cout << "Total value is :" << result << endl; return 0;}
编译并执行上述代码时,会产生以下结果 :
Total value is :300Total value is :120