C++ 数据类型与 Lambda 函数详解

需积分: 16 3 下载量 196 浏览量 更新于2024-08-26 收藏 111KB MD 举报
"C++语言相关的学习笔记,涵盖了数据类型、输入输出操作以及Lambda函数的介绍。" 在C++编程语言中,数据类型是构建程序的基础,它定义了变量的存储和行为方式。以下是对C++中7种基本数据类型的详细说明: 1. 布尔型(bool):用于表示真或假,占用1个字节,取值为`true`或`false`。 2. 字符型(char):用于存储单个字符,如字母、数字或符号,占用1个字节。在Unicode环境中,宽字符型(wchar_t)可能占用2个或4个字节,以支持更大的字符集。 3. 整型(int):通常用于整数运算,占用4个字节,具体大小取决于平台和编译器配置。 4. 浮点型(float):用于表示浮点数,精度较低,占用4个字节,遵循IEEE 754标准。 5. 双浮点型(double):提供更高的精度,占用8个字节,也是IEEE 754标准的一部分。 6. 无类型(void):不是一个真正的数据类型,但用于函数声明或指针,表示没有特定的数据类型。 7. 指针类型:指向其他变量的地址,其大小在32位系统中为4个字节,在64位系统中为8个字节。 在输入输出操作方面,C++提供了多种方法处理用户输入。cin是C++的标准输入流,通常用于读取整数、浮点数和字符串。然而,处理字符串时需要注意cin的行为。例如,以下代码段展示了cin.getline()和cin.getline()的交互: ```cpp int main() { char str[8]; cin.getline(str, 5); cout << str << endl; cin.getline(str, 5); cout << str << endl; return 0; } ``` 在这个例子中,cin.getline()会读取指定数量的字符(这里是5个)直到遇到换行符或文件结束。测试一中,如果用户输入少于4个字符,程序会正常运行。而在测试二中,如果用户输入超过4个字符,cin.getline()只会读取前4个字符,并且由于缓冲区未清空,第二次调用cin.getline()不会立即读取新输入,而是等待下一行输入,导致第二个字符串输出为空。 C++11引入了Lambda函数,这是一种匿名函数,可以方便地在代码中定义并立即使用。Lambda函数的关键特性包括: 1. Capture列表:允许捕获局部变量,可以是值(by value)或引用(by reference)。 2. 参数列表:与普通函数类似,定义Lambda函数接收的参数。 3. 返回类型:可选,如果能自动推导则可以省略。 4. 函数体:包含实际的代码逻辑。 Lambda函数的语法如下: ```cpp [capture](parameters) -> return-type { // function body } ``` 例如,以下是一个简单的Lambda函数,用于比较两个整数的大小: ```cpp [](int x, int y) -> bool { return x < y; } ``` 如果Lambda函数没有返回值,可以省略返回类型: ```cpp []{ ++global_x; } ``` Lambda函数可以在需要的地方直接定义,可以作为参数传递给其他函数,或者赋值给变量。它们的灵活性使得代码更加简洁,尤其是在处理算法和回调函数时。 在更复杂的场景中,Lambda函数可以包含临时变量(如上面示例中的`z`),但这些变量仅在Lambda函数的生命周期内有效,不会跨调用保留。 理解C++的基本数据类型、输入输出操作以及Lambda函数的使用,对于学习和使用C++至关重要。通过熟练掌握这些概念,开发者能够编写出高效、易维护的代码。