> For the complete documentation index, see [llms.txt](https://0x7c00s-organization.gitbook.io/cpp-exercise/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://0x7c00s-organization.gitbook.io/cpp-exercise/cppbasic.md).

# CppBasic

## cppProject Structure

### DEMO

C++ 项目的目录结构可以因项目类型和个人偏好而异，但通常会有一些通用的目录。下面是一个典型的 C++ 项目目录结构示例：

```
MyCppProject/
│
├── include/
│   ├── my_library_header1.hpp
│   └── my_library_header2.hpp
│
├── src/
│   ├── main.cpp
│   ├── module1.cpp
│   └── module2.cpp
│
├── lib/
│   └── (第三方库文件)
│
├── bin/
│   └── (可执行文件)
│
└── CMakeLists.txt (或者其他构建系统的配置文件)
```

在这个示例中：

* `include/（包含）` 存放项目的头文件，供其他源文件包含使用。
* `src/（源代码）` 目录通常包含项目的源文件。
* `lib/（库）` 目录用于存放第三方库文件，如果有的话。
* `bin/（可执行文件）` 目录通常用于存放生成的可执行文件。
* `tests/（测试）` 包含单元测试、集成测试和其他测试相关文件。
* `docs/（文档）` 存放项目的文档、说明文件、帮助文档等。
* `resources/（资源）` 存放项目所需的静态资源，如图像、配置文件等。
* `tools/（工具）` 包含项目使用的脚本、辅助工具和其他构建相关工具。
* `thirdparty/（第三方）` 用于存放第三方库的源代码或二进制文件。
* `build/（构建）` 包含构建生成的中间文件，比如编译生成的目标文件等。
* `install/（安装）` 包含安装相关的文件，如配置文件、安装脚本等。
* `CMakeLists.txt` 是 CMake 构建系统的配置文件，如果项目使用 CMake 进行构建的话。

这只是一个通用的示例，这些目录的设计是为了促进代码组织、可维护性和团队协作，并使得项目更易于理解和扩展，实际情况可能因项目规模和需要使用的工具而有所不同。

## CPP Basic Question

### Q1\_1 一个成员变量的大小

* 基本数据类型
* 内存对齐问题

### Q1\_2 一个成员变量的大小
