我正在尝试运行以下代码,但是我收到以下错误。
错误:无法将指针声明为' int&'
#include <iostream>
using namespace std;
int main()
{
int x = 5;
int *ptr = &x;
int &(*y) = ptr;
*y = 5;
cout << *ptr << endl;
return 0;
}
答案 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