如何定义指向整数的指针的别名?

How to define an alias to a pointer to an integer?

我正在尝试 运行 以下代码,但出现以下错误。

错误:无法声明指向 'int&'

的指针
#include <iostream>
using namespace std;

int main()
{
    int x = 5;
    int *ptr = &x;

    int &(*y) = ptr;
    *y = 5;

    cout << *ptr << endl;
    return 0;
}

如果您只想要一个指向同一内存区域的新指针,请使用:

int *y = ptr;

这不是一个 "alias",因为如果您更改 *ptr*y,两者都会更改,但如果您更改指针本身,另一个将不会更新.

如果您确实需要指针的引用,请使用:

int *&y = ptr;

您可以像声明对基本类型的引用一样声明对指针的引用。

考虑:

int main()
{
    int i = 0; // int

    int& ir = i; // int reference (reference to int)

    int* ip = &i; // int pointer (pointer to int)

    int*& ipr = ip; // int pointer reference (reference to pointer to int)

    *ip = 5;

    cout << *ipr << endl;
    return 0;
}
int *ptr = &x;

指针值具有地址和类型 x。

当您输入上面的代码时,ptr 的值是 x 的地址,并且 ptr 知道 x 的类型。

int * (&y) = ptr;

上面的代码声明了变量 'y'(类型:int*,define:ptr 的引用)

引用变量应同时声明和定义。

无论如何,ptr 和 y 指向相同的内存地址。

你很容易认为y是ptr的昵称

因此您可以使用 y 而不是 ptr 来访问变量 'x'。

v - 一个变量名。

&v - 一个将成为某物引用的变量。

*&v - 一个变量,将成为指向某物的指针的引用

int *&v - 将作为指向 int

指针的引用的变量

或者举个更有趣的例子,

(*&v)[5] - 一个变量,它将作为指向 5 个数组的指针的引用

int (*&v)[5] - 一个变量,它将作为指向 5 int

数组的指针的引用