C++ Primer学习笔记:结构体与sizeof解析

需积分: 3 5 下载量 19 浏览量 更新于2024-08-02 收藏 432KB DOCX 举报
"这篇学习笔记主要涵盖了C++ Primer的多个核心概念和技术,包括结构体、内存管理、数据类型对齐、标准输入输出、容器、泛型编程、面向对象编程、模板、异常处理、运行时类型识别以及一些特殊的语言特性。笔记深入浅出地解释了C++的关键知识点,帮助读者理解C++的复杂性并提高编程技能。" 在C++中,`struct`是一种用户定义的数据类型,允许我们将多个不同类型的数据成员组合在一起。`sizeof`运算符用于计算一个类型或变量占据的内存大小。在处理结构体时,`sizeof`的结果受到两个重要因素的影响: 1. **系统架构**:不同体系结构(如32位或64位)下的基本数据类型长度不同。例如,16位系统中的`int`通常为2字节,而在32位系统中则是4字节。这导致在不同系统中,包含这些类型成员的结构体的`sizeof`值会有差异。 2. **数据对齐**:为了优化性能,编译器通常会按照特定的规则(称为对齐约束)来放置数据成员。每个数据成员的地址必须是其大小的倍数,这样处理器可以更快地访问数据。例如,一个`int`变量的地址应该落在4字节的边界上。结构体的总大小会被调整以满足其最大成员的对齐要求。例如,如果一个结构体包含一个`double`(8字节)和一个`char`(1字节),那么结构体的大小将至少为8字节,即使`char`只占1字节,因为`double`的对齐要求是8字节。 笔记还提到了C++中的`extern "C"`,它用于在C++代码中链接C语言编译的函数和全局变量,保持与C语言的兼容性。C++流缓冲区和标准I/O库的讨论涉及如何处理输入输出,包括如何使用`ofstream`等类来写入文件。 此外,笔记涵盖了C++的广泛主题,如`string`类、`vector`、`bitset`、数组、表达式、语句、函数、关联容器、泛型算法、类、拷贝控制、操作符重载、函数对象、模板、异常处理、名字空间、多重继承、虚继承、内存分配、运行时类型识别(RTTI)、类成员指针、嵌套类、局部类和联合,以及一些C++特有的非移植性特性。这些内容构成了C++编程的基石,对深入理解和熟练掌握C++语言至关重要。