您如何声明引用指针?

时间:2020-03-22 23:50:55

标签: c++

main()
{
 int *a; 
 myfunc(a);
}

myfunc(int & *b)
{
 //'b' is a pointer with the same address as 'a'
 //so if you change what 'b' points to, it also changes what 'a' points to
}

以上操作无效。现在,这没什么大不了的,因为您可以使用双指针执行相同的操作,但是拥有引用指针似乎更简单。

main()
{
 int *a;
 myfunc(&a)
}

myfunc(int **b)
{
 //de-referencing b once will give you the 'a' pointer
}

2 个答案:

答案 0 :(得分:5)

可以有“引用指针”;您只是拼错了。最好从类型别名的角度来看它,因为它们会删除所有的 export class PopoverPage { parentPage: any; constructor( public params: NavParams ) { } order() { this.parentPage = this.params.get('ref'); this.parentPage.list(); } } 语法。如果您有:

*

很明显这意味着什么。因此,更改using Type = int; Type val = 5; void func(Type &ref); func(val); 意味着同一件事:

Type

using Type = int*; Type val = /*get a valid pointer*/; void func(Type &ref); func(val); 是对传递给函数的指针对象的引用。

要更清楚地说明这一点,对ref的引用是int*。从右到左阅读:指向int *&的指针的引用。

答案 1 :(得分:0)

拥有引用指针似乎更简单。

草率的 * 写作可能会导致混乱的理解。您不是在谈论“引用指针”,而是“引用指针”。对于将“参考”置于与“指针”同等的地位,“至”很重要。 “参考”在这里应该是名词,而不是形容词。 “至”也很重要,因为“指针”也得到“至”。在您的示例中,指针是int的指针。放在一起:您正在寻找指向 的指针 int的引用。此完整描述是关键。一旦我们在描述中加上了“ int一词,其余的自然流淌。

* 在这种情况下,对“草率”的任何负面含义都应该忽略。粗俗的措辞很普遍,并且在会话英语中被接受。但是,编程具有更高的精度标准。

您证明了自己知道如何声明a是指向int的指针。声明以int开头,继续到表示“指向”的符号,然后以a结尾:

int       *               a;
^         ^               ^
an int    a pointer to    a is

该声明是对a的反向读取,它是指向int的指针。相同的策略适用于大多数声明,尤其是所需的事物:b是对指向int的指针的引用” 。反读:

int       *               &                 b;
^         ^               ^                 ^
an int    a pointer to    a reference to    B is

您不能有指向int的引用的指针,但是您当然可以有指向int的指针的引用。