(Pointer) 指针的 C++ 概念问题

标签 c++ pointers

我有一个通常包含指向 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/

相关文章:

c++ - 具有结构的简单程序。获取此 : invalid operands of types 'void' and '<unresolved overloaded function type>' to binary 'operator

c++ - 指向对象的引用

C: NULL > NULL 总是假?

c - 免费(): invalid next size (fast) error

c++ - 我如何从用户而不是示例中获取输入字符串,然后计算空格、标点符号、数字和字母。 C++

c++ - 浏览一个相对基本的 C++ 模板

c - 函数的参数是指向声明为 const 的参数的指针,如何处理?

C - 赋值中不兼容的类型 - 结构和字符数组

c++ - 动态内存分配错误

c++ - opengl Framebuffer offscreen 到纹理,颜色错误