五.简单函数
函数是什么?
函数是 一种将输入值映射到唯一输出值的对应关系 1。
在数学中,函数通常表示为 $y = f(x)$,其中 $x$ 是自变量,$y$ 是因变量,$f$ 是对应法则2。
c++中,函数是一段可以重复使用的一段代码,每一段c++程序至少有一个函数即
main(),函数用于执行特定的任务
函数是执行特定操作的代码块。它可以有输入(即参数),并且可以返回一个值。
函数的定义包括函数名、参数列表、返回类型和函数体。
而函数的声明则告诉编译器函数的名称、返回类型和参数,但不包括函数体。
从用户使用的角度看,函数有两种
系统函数,即库函数,由编译系统提供,可以直接使用。
自定义函数,用以解决用户的专门需要。
从函数的形式看,函数分两类
无参函数,调用函数时不必给出参数。
有参函数,在调用函数时,要给出参数。
1.返回类型
表示函数返回值的数据类型
基本数据类型
int:整数
float:浮点数
double:双精度浮点数
char:字符
byte:8位有符号二进制补码整数
short:16位有符号二进制补码整数
long:64位有符号二进制补码整数
boolean:真或假
引用数据类型 :
class:用户定义的类
interface:返回实现了某个接口的对象
array:任何基本数据类型或引用数据类型的数组
enum:用户定义的枚举类型
泛型类型
特殊类型 :
void:表示方法不返回任何值
auto:让编译器自动推断返回值类型
智能指针:指向动态分配
对象的指针
Optional:表示可能为空的值
Stream:表示数据流
其他类型 :
String:用于表示文本数据2
Binary data:二进制数据,如图片、音频、视频等6
Json:一种轻量级的数据交换格式,适合用于接口数据的传输6
XML:一种可扩展标记语言,用于数据交换6
这些返回类型可以用于定义函数或方法的返回值,以满足不同的编程需求。
在实际编程中,选择合适的返回类型可以提高代码的可读性和可维护性6。
2.函数名
函数名是用来标识函数的唯一名称,可以根据函数名来调用相应的函数。
main(): 主函数,程序运行时首先被调用的函数。可以在这个函数中定义和执行主要的程序逻辑。
setup(): Arduino编程中的一个特殊函数名,用于初始化硬件设置或全局变量的初始值。通常在程序开始运行时被调用。
loop(): Arduino编程中的另一个特殊函数名,用于编写主要的程序逻辑。在程序初始化后,loop函数会被不断调用,实现循环执行。
print(): 常见的输出函数,用于将数据打印到控制台或其他设备上。
scanf(): 常见的输入函数,用于从用户处接收输入数据。
strlen(): 计算字符串长度的函数。
sqrt(): 求平方根的数学函数。
rand(): 生成随机数的函数。
open(): 用于打开文件的函数。
close(): 用于关闭文件的函数。
3.参数列表
参数列表中的参数用逗号分开,列表中包含了传递给调用函数的变量的声明。
如果函数不接收任何参数,参数列表就声明为void
函数定义的一般格式为:
返回值类型 函数名 (参数列表)
{
声明
语句
}
返回值
返回值类型是指返回给定义函数的值的类型,如果一个函数没有返回值,返回值类型就声明为void。
4.函数体
函数体是编程语言中定义一个函数功能的所有代码组成的整体.格式
例如
#include
// 函数声明3
int add(int a, int b);
int main() {
int x = 5;
int y = 3;
int sum = add(x, y); // 调用函数
std::cout << "Sum: " << sum << std::endl;
return 0;
}
// 函数定义
int add(int a, int b) {
return a + b; // 函数体
}
在这个示例中:
add是函数名。
int a, int b是参数列表。
int是返回类型。
{ return a + b; }是函数体
2.
int add(int a, int b) {
return a + b;
}
int add(int a, int b) {9
return a + b2;
}
在实际开发中,我们经常会遇到一些场景,其中函数调用所需的参数数量不是固定的。
本文将详细讲解每个宏的作用,演示一个简单的可变参数函数的实现,并讨论在使用过程中应当注意的问题。
此外,还将比较 C 和 C++ 在这方面的差异,以及探索更现代的方法,比如模板和重载,在某些情况下可以作为传统可变参数函数的替代方案。
在计算机程序设计,一个可变参数函数是指一个函数拥有不定引数,即是它接受一个可变数目的参数。
简单来说,就是函数的参数个数可变,参数类型不定的函数。
不同的编程语言对可变参数函数的支持有很大差异。