当前位置:首页 C++ > 正文

c++指针和引用的区别

作者:野牛程序员:2023-08-07 11:06:34 C++阅读 2777

指针和引用都是C++中用于间接访问变量的方式,但它们有一些重要的区别。下面是指针和引用的主要区别:

  1. 指针是一个变量,它存储另一个变量的内存地址,而引用则是一个别名,它直接绑定到另一个变量,没有自己的内存地址。

  2. 指针可以被重新赋值,可以指向不同的变量或者nullptr,而引用一旦绑定到某个变量后,就不能再改变绑定的对象。

  3. 指针可以为空,即指向空地址(nullptr),但引用必须在声明时绑定到一个合法的对象,不允许为空。

  4. 指针需要使用解引用运算符*来访问所指向的对象,而引用直接使用变量名就可以访问绑定的对象。

  5. 指针可以指向数组和动态分配的内存,而引用不支持直接绑定到数组或动态分配的内存。

  6. 对指针进行算术运算(如指针加法)是合法的,而对引用进行算术运算是不合法的。

下面是一些使用指针和引用的示例:

#include <iostream>

void modifyValue(int* ptr) {
    *ptr = 42; // 通过指针修改所指向的变量
}

void modifyValueWithReference(int& ref) {
    ref = 42; // 通过引用修改绑定的变量
}

int main() {
    int num = 10;

    int* ptr = &num; // 指针指向num的地址
    modifyValue(ptr); // 通过指针修改num的值

    std::cout << "Modified by pointer: " << num << std::endl; // 输出:42

    int& ref = num; // 引用绑定到num
    modifyValueWithReference(ref); // 通过引用修改num的值

    std::cout << "Modified by reference: " << num << std::endl; // 输出:42

    return 0;
}

在上述示例中,定义了一个modifyValue函数,它的参数是指针int* ptr,通过指针修改所指向的变量的值。然后,我们定义了一个modifyValueWithReference函数,它的参数是引用int& ref,通过引用修改绑定的变量的值。在main函数中,我们使用指针和引用来修改变量num的值,并输出修改后的结果。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击