C++中的&和*运算符详解

需积分: 19 1 下载量 43 浏览量 更新于2024-08-19 收藏 3.36MB PPT 举报
"C++程序语言设计 谭浩强 - 深入解析‘&’和‘*’运算符" 在C++编程语言中,`&` 和 `*` 是两种非常重要的运算符,它们分别代表地址取值和解引用。在C++程序设计中,理解这两个运算符的用法至关重要,因为它们与指针密切相关,而指针是C++中处理内存和数据结构的关键工具。 `&` 运算符称为地址运算符,它用于获取变量的内存地址。例如,如果有一个变量 `a`,`&a` 将返回 `a` 变量在内存中的地址。这个地址通常是一个整数值,表示变量在内存中的位置。 `*` 运算符则称为解引用运算符,它用于访问存储在指针所指向的内存地址中的值。如果有一个指针 `pointer_1`,且 `pointer_1` 指向变量 `a` 的地址(即 `pointer_1 = &a`),那么 `*pointer_1` 将返回 `a` 的值。 在表达式 `&*pointer_1` 中,由于 `*` 和 `&` 的优先级相同,它们会按照从右到左的顺序进行计算。首先,`*pointer_1` 解引用 `pointer_1`,得到 `a` 的值,然后 `&` 对这个值进行操作,返回 `a` 的地址。因此,`&*pointer_1` 的结果等同于 `&a`,即变量 `a` 的地址。 在描述中提到的 `pointer_2 = &*pointer_1` 语句,这里 `*pointer_1` 先被计算,得到 `a` 的值,然后 `&` 运算符取这个值的地址,也就是 `a` 的地址。这样,`pointer_2` 就被赋值为 `a` 的地址。如果之前 `pointer_2` 指向另一个变量 `b`,执行此赋值后,`pointer_2` 就会改变其指向,从指向 `b` 变为指向 `a`。 C++ 程序设计分为几个主要部分,包括面向过程的程序设计、基于对象的程序设计和面向对象的程序设计: 1. 面向过程的程序设计:这是C++的基础,涉及到函数、数组等概念,`&` 和 `*` 运算符在这个阶段尤为重要,因为它们是处理指针的关键。 2. 基于对象的程序设计:C++引入了类和对象的概念,`class` 关键字用于定义类,`对象` 是类的实例,可以封装数据和方法。 3. 面向对象的程序设计:进一步深入到继承、派生和多态性,这些特性使得C++能够进行更复杂、更高效的代码组织和复用。 `C++` 语言由C语言发展而来,保留了C的语法和效率,并增加了面向对象编程的支持,使得开发者可以利用面向对象的特性来设计更易于维护和扩展的大型软件系统。C++ 语言的这种灵活性和强大功能使其成为软件开发领域的首选语言之一,尤其在系统编程、游戏开发、嵌入式系统和高性能计算等领域。