📅  最后修改于: 2023-12-03 15:14:03.594000             🧑  作者: Mango
C++中的指针与引用都是用于间接访问内存地址的机制,但它们之间还是有很大的区别的。
指针是一种数据类型,它存储了一个变量的内存地址。指针的声明方式为type* name
,其中type
表示所指向的变量的数据类型,name
表示指针的名称。使用指针时,需要通过“*”运算符来访问指针指向的变量的值。
C++中的指针操作符有以下几种:
*
:用于获取指针所指向的变量的值。&
:用于获取变量的内存地址。++
和--
:用于将指针指向后一个或前一个内存单元。+
和-
:用于将指针向前或向后移动n个单位。[]
:用于访问指针所指向的数组元素。int main() {
int var = 10; // 定义一个整型变量var
int* p; // 定义一个整型指针p
p = &var; // 将p指向var
cout << "var 的值为:" << var << endl;
cout << "var 的地址为:" << &var << endl;
cout << "p 指向的变量的值为:" << *p << endl;
cout << "p 指向的变量的地址为:" << p << endl;
return 0;
}
指针作为函数参数时,可以通过指针来改变函数外部的变量的值。
// 交换两个整数的值
void swap(int* x, int* y) {
int temp = *x;
*x = *y;
*y = temp;
}
int main() {
int a = 1;
int b = 2;
swap(&a, &b);
cout << "a 的值为:" << a << endl;
cout << "b 的值为:" << b << endl;
return 0;
}
引用是一种变量别名,它在声明时需要用&
符号来标识。引用一旦初始化后,就不能再指向其它变量。
int main() {
int var = 10; // 定义一个整型变量 var
int& ref = var; // 引用 ref 到 var,此时 ref 就是 var 的别名
cout << "var 的值为:" << var << endl;
cout << "ref 的值为:" << ref << endl;
ref = 20; // 修改 ref 的值,也会同时修改 var 的值
cout << "修改后 var 的值为:" << var << endl;
cout << "修改后 ref 的值为:" << ref << endl;
return 0;
}
引用作为函数参数时,函数可以直接改变函数外部的变量的值,且更为简洁。
// 交换两个整数的值
void swap(int& x, int& y) {
int temp = x;
x = y;
y = temp;
}
int main() {
int a = 1;
int b = 2;
swap(a, b);
cout << "a 的值为:" << a << endl;
cout << "b 的值为:" << b << endl;
return 0;
}
指针和引用都是非常重要的C++特性。它们都可以提高程序的效率并简化程序的编写。选择使用指针或者引用要根据具体情况而定,要根据程序的需求和性能需求来灵活选择。