我有一个通常包含指向 int
的指针的结构。然而,在一些特殊情况下,这个int指针指向另一个指向int的指针是必要的。哇:到目前为止,我提到了指针这个词 5 次!
- 这可能吗?
我是这样想的:不是使用第二个 int 指针,这很可能是不可能的,因为我的主要 int 指针只能指向一个 int 而不是另一个 int 指针,我可以像这样使它成为一个引用:
int intA = 1;
int intB = 2;
int& intC = intB;
int* myPointers[ 123 ];
myPointers[ 0 ] = &intA;
myPointers[ 1 ] = &intB;
myPointers[ 3 ] = &intC;
所以上面会做我想做的事情:对 intB
(intC
) 的引用就像我想要的那样(如果它被改变它也会改变 intB
)
- 问题:引用一旦设置就无法更改,对吧?或者有什么办法吗?
简而言之:如何获得与 *
(指针)和 **
(指向指针的指针)一起工作的值?
最佳答案
int*
和 int**
是不同的类型,因此如果不使用潜在的不可移植类型转换,则不能将一个用作另一个。
在声明中:
int& intC = intB;
引用 intC
将始终引用 int
intB
。绑定(bind)无法更改。
您可以使用 union 来支持可以是 int*
或 int**
的类型,但您在阅读时需要确定, 哪个 union 成员在任何时候都是有效的。
union PIntOrPPInt
{
int* pint;
int** ppint;
};
int intA;
int intB;
int* pintC = &intB;
PIntOrPPInt myPointers[ 123 ];
myPointers[ 0 ].pint = &intA;
myPointers[ 1 ].pint = &intB;
myPointers[ 3 ].ppint = &pintC;
关于(Pointer) 指针的 C++ 概念问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2754812/