在C++中,*和&是两个非常重要的符号,它们用于指针和引用的相关操作。下面是它们的主要区别和用法:
1. * 的用法
指针声明:
当在变量声明中使用*时,它表示该变量是一个指针,指针存储的是另一个变量的地址。
int* p; // p 是一个指向整数的指针
解引用操作:
当使用*操作符作用于一个指针变量时,它被称为解引用,意思是访问指针指向的位置所存储的值。
int a = 10;
int* p = &a; // p 指向 a 的地址
int b = *p; // b 现在是 10,因为 *p 解引用获取 a 的值
2. & 的用法
地址运算符:
在变量前使用&时,它用于获取该变量的地址。
int a = 10;
int* p = &a; // 获取 a 的地址,并将其赋值给指针 p
引用声明:
& 也可以用于声明引用类型。引用是一个变量的别名,可以通过引用访问原来的变量。
int a = 10;
int& ref = a; // ref 是 a 的引用
ref = 20; // 现在 a 的值变为 20
3. 总结
*:
用于声明指针类型。
用于解引用,获取指针指向的变量的值。
&:
用于获取变量的地址(地址运算符)。
用于声明引用,创建变量的别名。
4. 示例代码
下面是一个简单的示例代码,展示了 * 和 & 的用法:
#include <iostream>
int main() {
int a = 10;
int* p = &a; // 取得 a 的地址
int& ref = a; // ref 是 a 的引用
std::cout << "a = " << a << std::endl; // 输出: a = 10
std::cout << "*p = " << *p << std::endl; // 输出: *p = 10
std::cout << "ref = " << ref << std::endl; // 输出: ref = 10
// 修改通过指针和引用
*p = 15; // 通过指针修改 a
ref = 20; // 通过引用修改 a
std::cout << "After modification:" << std::endl;
std::cout << "a = " << a << std::endl; // 输出: a = 20
std::cout << "*p = " << *p << std::endl; // 输出: *p = 20
std::cout << "ref = " << ref << std::endl; // 输出: ref = 20
return 0;
}
运行以上代码,你将看到变量在通过指针和引用修改后,值的变化。展示了 * 和 & 的基本用法和效果。