C++的函数
在C++中,函数是执行特定任务的一组语句,可以被重复调用。函数有助于模块化代码,提高可读性和可维护性。以下是C++中函数的一些基本概念:
函数定义与声明
函数定义包括函数的名称、参数列表和函数体。函数声明只包括函数的名称和参数列表。
cpp
复制
// 函数定义(声明和定义在一起) int add(int a, int b) { return a + b; // 函数体 } // 函数声明(不包含函数体) int add(int a, int b);
函数参数
值传递:数据从调用函数传到被调用函数。
引用传递:传递数据的引用,而不是数据的副本。
返回值
函数可以返回一个值,返回类型在函数声明中指定。如果没有指定返回类型,则默认返回类型为int。
函数调用
函数通过函数名调用,可以传递参数。
cpp
复制
int result = add(5, 3); // 调用函数并存储返回值
函数原型
在C++中,函数原型是函数声明的早期版本,用于编译器进行类型检查。原型不包含函数体。
cpp
复制
void printMessage(); // 函数原型 // 函数定义(在原型之后) void printMessage() { std::cout << "Hello, World!" << std::endl; }
默认参数
函数可以有默认参数,调用函数时可以不提供这些参数的值。
cpp
复制
int max(int a, int b, int c = 0) { return (a > b) ? (a > c ? a : c) : (b > c ? b : c); }
内联函数
内联函数是在调用点直接展开的函数,而不是生成单独的函数调用。这可以减少函数调用的开销。
cpp
复制
#define INLINE inline // 对于编译器来说,inline等同于INLINE INLINE int square(int x) { return x * x; }
函数重载
C++支持函数重载,即可以有多个同名函数,只要它们的参数列表不同。
cpp
复制
void print(int i) { std::cout << "Integer: " << i << std::endl; } void print(double f) { std::cout << "Floating point: " << f << std::endl; }
递归函数
递归函数是调用自身的函数。
cpp
复制
int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); } }
函数指针
函数指针是存储函数地址的变量,可以用来间接调用函数。
cpp
复制
void printNumber() { std::cout << "Number: " << 42 << std::endl; } int main() { void (*pf)() = printNumber; // 函数指针 pf(); // 通过函数指针调用函数 return 0; }
了解函数的基本概念和使用是学习C++的重要部分。通过函数,你可以将代码组织成可重用的块,从而提高代码的模块化和可维护性。