📜  C++函数

📅  最后修改于: 2020-09-25 04:55:25             🧑  作者: Mango

在本教程中,我们将借助示例学习C++ 函数和函数表达式。

函数是执行特定任务的代码块。

假设我们需要创建一个程序来创建一个圆并为其着色。我们可以创建两个函数来解决此问题:

将复杂的问题分成较小的块可以使我们的程序易于理解和重用。

函数有两种类型:

在本教程中,我们将主要关注用户定义的函数。

C++用户定义函数

C++允许程序员定义自己的函数。

用户定义的函数将执行特定任务的代码分组,并为该组代码指定名称(标识符)。

从程序的任何部分调用该函数 ,它们都将执行该函数主体中定义的代码。

C++函数声明

声明函数的语法为:

returnType functionName (parameter1, parameter2,...) {
    // function body   
}

这是一个函数声明的例子。

// function declaration
void greet() {
    cout << "Hello World";
}

这里,

注意:在本教程的后面,我们将学习returnTypeparameters

调用函数

在上面的程序中,我们声明了一个名为greet()的函数 。要使用greet() 函数,我们需要调用它。

这就是我们如何调用上面的greet() 函数。

int main() {
     
    // calling a function   
    greet(); 

}

示例1:显示文本

#include 
using namespace std;

// declaring a function
void greet() {
    cout << "Hello there!";
}

int main() {

    // calling the function
    greet();

    return 0;
}

输出

Hello there!

功能参数

如上所述, 函数可以用参数(自变量)中声明。参数是在声明函数时传递的值。

例如,让我们考虑以下函数 :

void printNum(int num) {
    cout << num;
}

在这里, int变量num是函数参数。

我们在调用函数时将值传递给函数参数。

int main() {
    int n = 7;
    
    // calling the function
    // n is passed to the function as argument
    printNum(n);
    
    return 0;
}

示例2:带参数的函数

// program to print a text

#include 
using namespace std;

// display a number
void displayNum(int n1, float n2) {
    cout << "The int number is " << n1;
    cout << "The double number is " << n2;
}

int main() {
     
     int num1 = 5;
     double num2 = 5.5;

    // calling the function
    displayNum(num1, num2);

    return 0;
}

输出

The int number is 5
The double number is 5.5

在上面的程序,我们使用的是具有一个函数 int参数和一个double参数。

然后,我们将num1num2作为参数传递。这些值分别由函数参数n1n2存储。

注意:调用函数传递的参数类型必须与函数声明中定义的相应参数匹配。

退货声明

在以上程序中,我们在函数声明中使用了void。例如,

void displayNumber() {
    // code
}

这意味着该函数不返回任何值。

也可以从函数返回值。为此,我们需要在函数声明期间指定函数的returnType

然后, return语句可用于从函数返回值。

例如,

int add (int a, int b) {
   return (a + b);
}

在这里,我们有数据类型int而不是void 。这意味着该函数返回一个int值。

代码return (a + b);返回两个参数的和作为函数值。

return语句表示函数已结束。 函数内部return后的任何代码都不会执行。

示例3:将两个数字相加

// program to add two numbers using a function

#include 

using namespace std;

// declaring a function
int add(int a, int b) {
    return (a + b);
}

int main() {

    int sum;
    
    // calling the function and storing
    // the returned value in sum
    sum = add(100, 78);

    cout << "100 + 78 = " << sum << endl;

    return 0;
}

输出

100 + 78 = 178

在上面的程序中, add() 函数用于查找两个数字的和。

我们在调用函数时传递两个int 字面量 10078

我们将函数的返回值存储在变量sum ,然后进行打印。

请注意, sumint类型的变量。这是因为add()的返回值是int类型。

功能原型

在C++中, 函数声明的代码应在函数调用之前。但是,如果要在函数调用之后定义函数 ,则需要使用函数原型。例如,

// function prototype
void add(int, int);

int main() {
    // calling the function before declaration.
    add(5, 3);
    return 0;
}

// function definition
void add(int a, int b) {
    cout << (a + b);
}

在上面的代码中, 函数原型为:

void add(int, int);

这为编译器提供了有关函数名称及其参数的信息。这就是为什么我们可以使用代码来调用已定义函数之前的函数 。

函数原型的语法为:

returnType functionName(dataType1, dataType2, ...);

示例4:C++函数原型

// using function definition after main() function
// function prototype is declared before main()

#include 

using namespace std;

// function prototype
int add(int, int);

int main() {
    int sum;

    // calling the function and storing
    // the returned value in sum
    sum = add(100, 78);

    cout << "100 + 78 = " << sum << endl;

    return 0;
}

// function definition
int add(int a, int b) {
    return (a + b);
}

输出

100 + 78 = 178

上面的程序与示例3几乎相同。唯一的区别是,此函数是 函数调用之后定义的。

这就是我们在此示例中使用函数原型的原因。

使用用户定义功能的好处

C++库函数

库函数是C++编程中的内置函数。

程序员可以通过直接调用函数来使用库函数。他们不需要自己编写函数。

C++中一些常见的库函数是sqrt()abs()isdigit()等。

为了使用库函数,我们通常需要包括在其中定义这些库函数的头文件。

例如,为了使用诸如sqrt()abs()类的数学函数,我们需要包括头文件cmath

示例5:C++程序查找数字的平方根

#include 
#include 
using namespace std;

int main() {
    double number, squareRoot;
    
    number = 25.0;

    // sqrt() is a library function to calculate the square root
    squareRoot = sqrt(number);

    cout << "Square root of " << number << " = " << squareRoot;

    return 0;
}

输出

Square root of 25 = 5

在此程序中, sqrt()库函数用于计算数字的平方根。

sqrt()的函数声明在cmath头文件中定义。这就是为什么我们需要使用代码#include 来使用sqrt() 函数。

要了解更多信息,请访问C++标准库函数。