1. C++结构体与引用基础解析
在C++编程中,结构体(struct)和引用(references)是两个极其重要的基础概念。这个篮球罚球统计的示例完美展示了如何将它们结合使用,实现高效的数据操作。
1.1 结构体的定义与初始化
我们先来看结构体的定义部分:
cpp复制struct free_throws {
std::string name;
int made; // 投进数
int attempts; // 尝试次数
float percent; // 命中率
};
这个结构体有四个成员变量:
name:球员姓名,使用std::string类型made:投篮命中次数attempts:投篮尝试次数percent:命中率百分比
在main函数中,我们使用列表初始化来创建结构体实例:
cpp复制free_throws one = {"Ifelsa Branch", 13, 14};
这里有个细节需要注意:初始化时只提供了前三个成员的值,percent成员未被初始化。这是因为命中率需要通过计算得出,后面会调用set_pc()函数来计算。
提示:现代C++中更推荐使用统一初始化语法:
free_throws one{"Ifelsa Branch", 13, 14};
1.2 引用的基本概念
引用是C++中非常重要的特性,它本质上是一个变量的别名。在示例代码中,我们看到了三种不同的引用使用方式:
-
常量引用:
void display(const free_throws & ft)- 避免数据拷贝,提高效率
const保证函数内不会修改原始数据
-
非常量引用:
void set_pc(free_throws & ft)- 允许函数修改传入的原始数据
- 不需要返回值就能改变调用者的变量
-
返回引用:
free_throws & accumulate(...)- 函数返回的是对象的引用而非副本
- 这是实现链式调用的关键
引用与指针的区别:
- 引用必须初始化且不能改变指向
- 引用更安全,不会有空引用的
