如何定义指向整数的指针的别名?
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
数组的指针的引用
我正在尝试 运行 以下代码,但出现以下错误。
错误:无法声明指向 '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