指针

发布于 2024-04-09  47 次阅读


指针

指针初步

指针

  1. 定义与初始化:指针是一个变量,其值为另一个变量的地址。在定义一个指针变量时,必须指定指针所指向的数据的类型。指针在使用前应该被初始化,否则它指向一个不确定的内存地址,这可能会导致程序崩溃。

    cppCopy codeint a = 10;
    int* p = &a; // p 是一个指向整数的指针,初始化为a的地址。
  2. 解引用:可以通过解引用操作符(*)来访问指针指向的内存地址中存储的数据。

    cppCopy code
    *p = 20; // 改变了a的值
  3. 空指针:指针可以指向一个特殊的值nullptr(C++11之后的写法),表示它不指向任何对象。

    cppCopy code
    int* p = nullptr;
  4. 指针的指针:可以有指向指针的指针。

    cppCopy code
    int** pp = &p;
  5. 指针算术:可以对指针进行加减操作,这种操作基于指针指向的数据类型的大小来移动指针的位置。

引用

  1. 定义与初始化:引用不是一个独立的对象,它只是被引用变量的一个别名,定义时必须初始化。

    cppCopy code
    int& ref = a; // ref是变量a的引用
  2. 使用:通过引用,可以直接操作原始数据,不需要解引用操作。

    cppCopy code
    ref = 30; // 改变了a的值
  3. 不存在空引用:引用一旦被初始化后,就不能再改变为另一个对象的引用。引用必须始终引用某些数据。

  4. 引用的引用:C++不支持直接创建引用的引用、指向引用的指针或引用数组。

  5. 引用与指针的用途:引用通常用于函数参数和返回类型,使得函数调用更加简洁和易于理解。而指针则更灵活,尤其是在动态内存管理、数组操作和数据结构如链表和树中更为广泛地使用。

关键差异

  • 语法和使用:引用的使用就像是对另一个变量的直接操作,而指针需要解引用。
  • 可变性:指针可以改变指向不同的对象,而引用一旦被初始化指向一个对象,就不能改变。
  • 存在性:指针可以是nullptr,表明它不指向任何对象;引用必须引用某个对象。
  • 内存占用:引用在实现时往往使用指针,因此引用和指针在内存中占用的空间通常相同,但引用提供了更为直观和简洁的语法。

理解和正确使用指针和引用对于高效和正确地编写C++程序至关重要。

QQ:2219349024
最后更新于 2024-04-09