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

时间:2015-04-18 15:41:03

标签: c++ codeblocks gnu

我正在尝试运行以下代码,但是我收到以下错误。

错误:无法将指针声明为' int&'

#include <iostream>
using namespace std;

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

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

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

4 个答案:

答案 0 :(得分:2)

您声明对指针的引用的方式与声明对基本类型的引用的方式相同。

考虑:

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;
}

答案 1 :(得分:1)

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

int *y = ptr;

这不是一个&#34;别名&#34;如果您更改*ptr*y,则两者都会更改,但如果您自己更改指针,则另一个将不会更新。

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

int *&y = ptr;

答案 2 :(得分:1)

int *ptr = &x;

指针值的地址和类型为x。

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

int * (&y) = ptr;

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

应同时声明和定义参考变量。

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

你可以很容易地认为y是ptr的昵称。

因此您可以使用y代替ptr。

来访问变量'x'

答案 3 :(得分:0)

v - 变量名称。

&v - 一个可以作为参考的变量。

*&v - 一个变量,它将成为指向

的指针的引用

int *&v - 一个变量,它将成为指向int

的引用

或者是一个更有趣的例子,

(*&v)[5] - 一个变量,它将指向一个指向5个数组

的数组的指针

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

数组的指针的引用