您当前的位置: 首页 >  c++

RuiH.AI

暂无认证

  • 0浏览

    0关注

    274博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C++学习 八、函数

RuiH.AI 发布时间:2022-02-03 20:39:31 ,浏览量:0

C++学习 八、函数
  • 前言
  • 函数使用
    • 函数声明(函数原型)
    • 函数定义
    • 函数调用
  • 函数参数,按值传递
    • 传值
    • 传址
    • 函数与数组
    • 函数与字符串
    • 函数与结构体
  • 默认参数
  • 内联函数

前言

本片继续学习C++,函数。

函数使用

函数是C++的基本编程模块,以便于程序的模块化和代码复用。

函数声明(函数原型)

要使用函数,首先要提供函数原型,即声明函数,格式为 TypeName FuncName (Parameters)返回值类型 函数名 (参数列表)

函数原型为编译器提供了函数名,函数返回值类型,参数类型和数量,用以编译器检查和处理。下面是一个函数声明的例子:

int func1(int a, int b);

上面这个函数声明了一个fuc1函数,它依次接受两个int类型的参数,返回int类型。

函数声明中的参数名可以省略,上面的函数声明等价于:

int func1(int, int);

C++中,如果向函数传递了不同类型的参数(可转换),将强制转换为期望的类型;如果返回值与返回类型不相同(可转换),则强制转换为返回类型:

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

std::cout a = 1; 
	*st.a = 1; // equal
}

注意:传结构体的指针时,实参指向的结构体就能够被形参修改。

默认参数

C++中,函数可以设置默认参数,在函数声明时设置:

int newFunc(int a, int b, int threshold=5);

上面的函数,可以只提供参数a,b的值,而省略传递threshold的值,这样函数会使用threshold的默认值5,如果提供threshold的值,就会覆盖默认值。

注意1:函数声明时,带默认值参数的右边的参数必须都带参数值。下面的函数声明将报错:

// int newFunc(int a, int threshold=5, int b) // error!

注意2:函数声明和定义中,只有一个需要带默认值,两个都带默认值就会报错。建议只在函数声明时加入默认值。

注意3:即使函数带了默认值,仍然是根据参数个数从左往右一个一个传值的,不能跳过某个默认参数。

内联函数

内联函数是C++提高程序运行速度的一种方式。

程序运行时,操作系统把程序的二进制机器指令加载到计算机内存中运行,因此每条指令都有特定的内存地址。函数调用时,程序存储调用指令的地址,然后跳转到函数的内存地址,执行函数,然后跳回调用指令的位置。

关键字inline把函数设定为内联函数。内联函数在编译时,不会被编译成函数被调用的指令,而是直接把内联函数体嵌入到调用处,类似于把函数在嵌入处重写。因此,内联函数在运行时,没有一般函数的跳转操作。

因此,内联函数的运行速度比常规函数快,但是内存占用多。如果有10个地方使用了内联函数,那么这个程序就有10个内联函数的代码块。

一般把内联函数的声明与定义结合,放在.h文件里:

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

一般来说,功能简单(代码短),使用次数多的函数更适合作为内联函数;代码比较长,内含循环之类的就不适合。

此外,内联函数不能递归。

关注
打赏
1658651101
查看更多评论
立即登录/注册

微信扫码登录

0.8210s