当前位置: 首页 > article >正文

C++之 “” 用法(总结)

目录

2.取地址运算符

3.引用声明

4.按引用传递参数

5.位与运算符

6.逻辑与运算符(&&的一部分)

7.在类中定义引用成员

8.在函数返回值中使用引用

9.在Lambda表达式中捕获引用


1.介绍

        在C++中,&符号有多种用途,具体作用取决于上下文。以下是&符号的主要用法:

2.取地址运算符

        &用于获取变量的内存地址。

int x = 10;
int* ptr = &x; // ptr 存储变量 x 的内存地址

        &x返回变量x的地址。

        通常用于指针的初始化或传递变量的地址给函数。

3.引用声明

        &用于声明引用变量。引用是变量的别名,操作引用相当于操作原变量。

int x = 10;
int& ref = x; // ref 是 x 的引用
ref = 20;     // 修改 ref 也会修改 x
std::cout << x; // 输出 20

        引用必须在声明时初始化,且不能重新绑定到其他变量。

        引用通常用于函数参数传递,避免拷贝额外开销。

4.按引用传递参数

        在函数参数中使用&,可以将参数按引用传递,而不是按值传递。

void increment(int& value) {
    value++; // 直接修改传入的变量
}

int main() {
    int x = 10;
    increment(x); // x 的值被修改为 11
    std::cout << x; // 输出 11
    return 0;
}

        按引用传递可以避免拷贝大对象,提高效率。

        如果不需要修改传入的参数,可以使用const引用,如const int&。

5.位与运算符

        &是位与运算符,用于对两个整数的二进制位进行按位与操作。

int a = 5;    // 二进制 0101
int b = 3;    // 二进制 0011
int c = a & b; // 结果 0001 (1)
std::cout << c; // 输出 1

        按位与运算常用于掩码操作或标志位的检查。

6.逻辑与运算符(&&的一部分)

        &&是逻辑与运算符,用于布尔表达式中。&也可以用于逻辑与,但它不会短路求值(使用&&时,若前一个条件为false,后一个条件就不会执行,称为短路求值)。

bool a = true;
bool b = false;
if (a && b) { // 逻辑与,短路求值
    // 不会执行,因为 b 为 false
}
if (a & b) { // 按位与,不会短路求值
    // 不会执行,因为 b 为 false
}

        &&是常用的逻辑与运算符,具有短路特性。(如果第一个操作数为false,不会计算第二个操作数)

        &是按位与运算符,也可以用于布尔运算,不会短路。

7.在类中定义引用成员

        在类中,可以使用&定义引用类型的成员变量。

class MyClass {
public:
    int& ref;
    MyClass(int& value) : ref(value) {} // 初始化引用成员
};

int main() {
    int x = 10;
    MyClass obj(x);
    obj.ref = 20; // 修改 x 的值
    std::cout << x; // 输出 20
    return 0;
}

        引用成员必须在构造函数中初始化,且不能重新绑定。

8.在函数返回值中使用引用

        函数可以返回引用,从而允许直接修改返回值引用的对象。

int& getMax(int& a, int& b) {
    return (a > b) ? a : b;
}

int main() {
    int x = 10, y = 20;
    getMax(x, y) = 30; // 修改 y 的值
    std::cout << y; // 输出 30
    return 0;
}

        返回引用时需要注意避免返回局部变量的引用,否者会导致未定义行为。

9.在Lambda表达式中捕获引用

        在Lambda表达式中,&用于按引用捕获外部变量。

int x = 10;
auto lambda = [&]() { // 按引用捕获所有外部变量
    x = 20;
};
lambda();
std::cout << x; // 输出 20

        [&]表示按引用捕获外部所有变量。也可以指定具体变量按引用捕获。如[&x]。

10.总结

        &符号的多种用途使它在C++中非常重要,理解其在不同上下文中的含义是掌握C++的关键之一。

如有错误,敬请指正!!!


http://www.kler.cn/a/567437.html

相关文章:

  • 【Oracle脚本】消耗CPU高的SQL抓取
  • JavaPro _JVM 知识点速记 JVM大全
  • 【AVL树】—— 我与C++的不解之缘(二十三)
  • GitCode 助力 python-office:开启 Python 自动化办公新生态
  • 机器学习的通用工作流程
  • 若依框架修改为多租户
  • OptiTrack光学跟踪系统:引领工厂机器人应用的革新浪潮
  • 克隆项目到本地
  • C++(Qt)软件调试---Linux 性能分析器perf(29)
  • lua学习(二)
  • Compose笔记(七)--Modifier
  • rustup-init.exe 安装缓慢的解决办法
  • CSS浮动详解
  • [密码学实战]Java实现SM2数字信封(结合SM4对称加密)生成与解析
  • 前后端常用正则
  • Ruby基础
  • QT异步编程之QtConcurrent
  • C语言(17)------------>数组的练习
  • 【练习】【贪心】力扣134. 加油站
  • 人工智能销售客服app开发,OpenAI宣布GPT-5免费使用?Deepseek让AI巨头全跪了