C++基础——函数

C++语言函数基础:

(这部分基础内容也是C语言的基础函数内容)

函数是用函数名来调用执行的具有特定功能的语句块。

为降低编写大程序的复杂度,必须将其分解为较小、较简单的模块。

函数和类是构造C++程序的基本模块。

函数分为:函数声明、函数定义、函数调用

函数声明

声明函数,这通常也称为函数原型。

函数声明告诉编译器函数的存在、它的名称、返回类型以及它接受的参数类型和数量。

这通常放在程序的开始部分,例如在main函数之前。

如果函数定义在调用它的代码之前,那么可以省略这一步。

函数定义

就是编写函数的实际代码。函数定义包括函数返回类型、函数名、参数列表以及函数体

返回类型 函数名(参数列表)//有多个的话用,隔开
{
       //函数体
}

eg:
int add(int a, int b)
{  
    int sum = a + b;  
    return sum;  
}

如果有返回值那返回类型是返回值的数据类型

如果没有返回值那就使用void

函数调用

函数调用语法:
函数名(传入实参值);

#include <stdio.h>    
 
//函数声明
int add(int num1, int num2);
 
int main() {  
   // 函数调用  
   int a = 5;  
   int b = 10;  
   int result = add(a, b);  
  
   printf("The sum of %d and %d is %d\n", a, b, result);  
  
   return 0;  
}

// 函数定义  
int add(int num1, int num2) 
{  
   int sum = num1 + num2;  
   return sum;  
} 

C++函数功能扩充:

1.函数重载

在C++中,函数重载允许我们定义多个同名函数,但每个函数接受不同的参数类型、参数数量或参数顺序。

//举一个简单的例子

// 第一个函数重载版本,接收两个整数参数  
int add(int a, int b)
{  
    return a + b;  
}  
  
// 第二个函数重载版本,接收两个浮点数参数  
double add(double a, double b) 
{  
    return a + b;  
}  

函数重载不会减少函数个数,主要是可以增加代码的复用性和可读性。

编译器会根据函数调用时提供的参数来区分应该调用哪个函数。

函数重载的规则基于函数签名(函数签名是指一个函数区别于其他函数的特定标识,它主要包括函数名以及它的参数列表包括参数的类型、顺序和数量)。即使函数返回类型不同,只要参数列表不同,也可以进行重载。

重载函数的参数类型必须足够不同,以便编译器能够区分它们。

例:两个函数如果仅仅是参数顺序不同,则不能构成重载。

2.默认值

默认值,又称缺省值,是指一个属性或参数在被修改之前的初始值。

默认值的作用在于确保变量或参数在使用之前都有一个初始值,避免出现未知的错误或异常,并提高代码的可读性和维护性。

为函数参数提供了默认值,那么在调用函数时可以选择性地传递该参数的值。

如果在调用时未传递某个带有默认值的参数,那么编译器会自动使用默认值。

如果既为参数提供了默认值,又在函数调用时传递了实参,那么实参的值将覆盖默认值。

实参的值将具有更高的优先级,它将被用来执行函数而不是默认值。

int add(int a, int b = 1)//默认值不能使用花括号 {} 来设置
{  
    return a + b;  
}  

如果一个函数形参被指定了默认值,那么位于它右侧的所有形参都必须指定默认值。  

void func(int a, int b = 0, int c = 0); 
// 合法
void func(int a = 0, int b, int c = 0); 
// 不合法

3.内联函数

方法:添加修饰词inlink

主要特点:在调用时不是通过函数调用的机制来实现,而是通过将函数体直接插入到调用处,从而避免了频繁的函数压栈、返回等操作,以减少函数调用的开销,提高程序的运行效率。
内联函数通常用于定义类的成员函数,并且只在调用处展开,不会在其他地方产生重复代码,这有助于减少代码膨胀。

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

inline 关键字只是向编译器发出一个请求,建议编译器内联该函数。编译器可以选择忽略这个请求,特别是在函数体很大或者复杂的情况下。因此,inline 并不保证函数一定会被内联。

对于一些简单的、频繁使用的、体积较小的函数,使用内联可以显著提高程序执行效率。

4.引用

简单的来说就是一个已存在变量的别名,即它是变量的另一个名字。

引用在声明时必须被初始化,并且一旦初始化后就不能再指向另一个变量。

引用不是指针,引用不能为空,引用一定得初始化,一旦绑定后就不能改变了

引用不占用存储空间,它只是为已存在的变量提供了一个新的访问方式

左值引用:对变量起别名

数据类型 &引用名{}

右值引用:给常量或者表达式的结果起一个别名

数据类型 &&引用名{}

引用在函数参数和返回值中特别有用,因为它们允许函数直接操作原始数据,而不是数据的副本。

  • 25
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值